MỘT SỐ KỸ THUẬT GIẤU TINlib.uet.vnu.edu.vn/bitstream/123456789/979/1/Luan_an... · 2019....
Transcript of MỘT SỐ KỸ THUẬT GIẤU TINlib.uet.vnu.edu.vn/bitstream/123456789/979/1/Luan_an... · 2019....
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
HUỲNH BÁ DIỆU
MỘT SỐ KỸ THUẬT GIẤU TIN
TRONG ÂM THANH SỐ
LUẬN ÁN TIẾN SĨ HỆ THỐNG THÔNG TIN
Hà Nội – Năm 2017
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
HUỲNH BÁ DIỆU
MỘT SỐ KỸ THUẬT GIẤU TIN
TRONG ÂM THANH SỐ
Chuyên ngành: HỆ THỐNG THÔNG TIN
Mã số: 62 48 01 04
LUẬN ÁN TIẾN SĨ HỆ THỐNG THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS. TSKH. NGUYỄN XUÂN HUY
Hà Nội – Năm 2017
i
Lời cam đoan
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các kết quả được
viết chung với các tác giả khác đều được sự đồng ý của đồng tác giả trước khi đưa
vào luận án. Các kết quả nêu trong luận án là trung thực và chưa từng được ai công
bố trong các công trình nào khác.
Tác giả
Huỳnh Bá Diệu
ii
Lời cảm ơn
Luận án được thực hiện tại Trường Đại học Công nghệ - Đại học Quốc Gia Hà
Nội dưới sự hướng dẫn của PGS.TSKH. Nguyễn Xuân Huy.
Tôi xin bày tỏ lòng biết ơn sâu sắc đến PGS.TSKH. Nguyễn Xuân Huy đã có
những định hướng giúp tôi thành công trong công việc nghiên cứu. Thầy cũng động
viên chỉ bảo cho tôi vượt qua những khó khăn và cho tôi nhiều kiến thức quý báu về
nghiên cứu khoa học. Nhờ sự chỉ bảo của Thầy, tôi mới có thể hoàn thành luận án.
Tôi xin gửi lời cảm ơn sâu sắc đến ơn PGS.TS. Trịnh Nhật Tiến, PGS.TS. Hà
Quang Thụy, PGS.TS. Nguyễn Ngọc Hóa cùng các Thầy Cô ở Bộ môn Các Hệ thống
thông tin, khoa Công nghệ thông tin Trường Đại học Công nghệ, nơi tôi học tập, đã
tạo điều kiện thuận lợi và hỗ trợ cho tôi trong quá trình làm nghiên cứu sinh.
Tôi cũng xin cảm ơn PGS.TS. Phạm Văn Ất đã góp ý để tôi điều chỉnh và hoàn
thành phần nội dung của luận án.
Đặc biệt, tôi xin chân thành cảm ơn Lãnh đạo Trường Đại học Duy Tân đã hỗ
trợ cho tôi kinh phí, tạo điều kiện về thời gian trong quá trình học tập và nghiên cứu.
Cuối cùng, tôi xin gửi lời cảm ơn sâu sắc đến những người thân trong gia đình,
đã cho tôi điểm tựa vững chắc, động viên và nhắc nhở tôi hoàn thành luận án.
iii
MỤC LỤC
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
iv
2.3.8. Phương pháp điều chế tỉ lệ thời gian ..................................................... 39
2.3.9. Phương pháp giấu dựa vào Patchwork .................................................. 39
2.3.10. Phương pháp dựa vào các đặc trưng nổi bật ................................... 41
Tổng kết chương 2 .................................................................................................. 42
Chương 3. MỘT SỐ THUẬT TOÁN GIẤU TIN TRÊN MIỀN THỜI GIAN ...... 43
3.1. Thuật toán giấu tin kết hợp mã sửa lỗi Hamming .......................................... 43
3.1.1. Mã Hamming ......................................................................................... 44
3.1.2. Quá trình giấu tin ................................................................................... 45
3.1.3. Quá trình giải tin và xác thực tin giấu ................................................... 46
3.1.4. Kết quả thử nghiệm và đánh giá ............................................................ 47
3.2. Thuật toán giấu điều chỉnh giá trị nhóm bit ................................................... 49
3.2.1. Sinh chuỗi xác định mẫu dữ liệu và vị trí trên mẫu ............................... 49
3.2.2. Điều chỉnh độ lệch bit ............................................................................ 50
3.2.3. Thuật toán giấu tin theo phương pháp điều chỉnh giá trị nhóm bit ....... 51
3.2.4. Quá trình giải tin theo phương pháp điều chỉnh giá trị nhóm bit .......... 53
3.2.5. Đánh giá phương pháp giấu tin.............................................................. 53
3.3. Thuật toán giấu bằng điều chỉnh 2 mẫu trong một đoạn chứa 25 mẫu .......... 56
3.3.1. Xáo trộn dữ liệu ..................................................................................... 56
3.3.2. Thuật toán giấu 4 bit trong khối 25 mẫu dữ liệu ................................... 57
3.3.3. Thuật toán giấu tin ................................................................................. 58
3.3.4. Thuật toán giải tin .................................................................................. 59
3.3.5. Kết quả thử nghiệm và đánh giá ............................................................ 62
3.4. Thuật toán điều chỉnh 1 bit trong khối để giấu 8 bit dữ liệu .......................... 64
3.4.1. Xáo trộn dữ liệu bằng phương pháp hoán vị ......................................... 64
3.4.2. Tính tổng XOR của đoạn ....................................................................... 65
3.4.3. Thuật toán giấu một byte dữ liệu vào trong khối 256 mẫu .................... 68
3.4.4. Thuật toán giấu tin ................................................................................. 69
3.4.5. Thuật toán giải tin .................................................................................. 69
3.4.6. Kết quả thử nghiệm và đánh giá ............................................................ 70
3.5. Thuật toán giấu điều chỉnh tiếng vọng ........................................................... 72
3.5.1. Thuật toán giấu của Rios Chavez .......................................................... 72
3.5.2. Kỹ thuật điều chỉnh tiếng vọng .............................................................. 74
3.5.3. Kết quả thử nghiệm và đánh giá ............................................................ 75
Tổng kết chương 3 .................................................................................................. 77
Chương 4. MỘT SỐ THUẬT TOÁN GIẤU TIN TRÊN MIỀN BIẾN ĐỔI .......... 78
4.1. Thuật toán điều chỉnh các hệ số trên miền biến đổi Fourier .......................... 78
v
4.1.1. Điều chỉnh giá trị trong miền tần số ...................................................... 78
4.1.2. Thuật toán điều chỉnh mẫu để giấu một bit ........................................... 80
4.1.3. Thuật toán giấu ...................................................................................... 81
4.1.4. Thuật toán lấy 1 bit mật từ 1 mẫu .......................................................... 82
4.1.5. Thuật toán giải tin .................................................................................. 82
4.1.6. Kết quả thử nghiệm và đánh giá ............................................................ 83
4.2. Thuật toán giấu điều chỉnh hệ số biến đổi wavelet ........................................ 86
4.2.1. Thuật toán giấu 1 bit .............................................................................. 86
4.2.2. Thuật toán trích 1 bit trong đoạn ........................................................... 87
4.2.3. Thuật toán giấu tin ................................................................................. 87
4.2.4. Thuật toán trích tin ................................................................................. 88
4.2.5. Kết quả thực nghiệm và đánh giá .......................................................... 88
Tổng kết chương 4 .................................................................................................. 91
KẾT LUẬN .......................................................................................................................... 91
DANH MỤC TÀI LIÊU THAM KHAO ....................................................................... 94
PHỤ LỤC ........................................................................................................................... 101
vi
Danh mục các ký hiệu và chữ viết tắt
A/D Analog to Digital converter
AAC Advanced Audio Coding
BPSK Binary Phase Shift Keying
CDMA Code-Division Multiple Access
D/A Digital-to-Analog converter
DFT Discrete Fourier transform
DSSS Direct Sequence Spread Spectrum
DWT Discrete Wavelet Transform
ECC Error Corecttion Code
FFT Fast Fourier Transform
HAS Human Auditory System
HVS Human Visual System
IDWT Inverse Discrete Wavelet Transform
IFFT Inverse Fast Fourier Transform
ITU International Telecommunication Union
LSB Least Significant Bit
MCPT Modify Chen-Pan-Tseng scheme
MPEG Moving Picture Experts Group
MPS Modify Patchwork Scheme
MSE Mean Squared Error
NCC Normalized Cross Correlation
ODG Objective Difference Grade
PCM Pulse Code Modulation
RIFF Resource Interchange File Format
SDMI Secure Digital Music Initiative
SNR Signal –to- Noise Ratio
SS Spread Spectrum
vii
Danh mục các bảng
Bảng 1.1. Môt sô đinh dang tệp âm thanh trên may tinh ..................................... 19
Bảng 1.2. Bảng môt sô phần mềm giấu tin trong âm thanh ................................. 20
Bảng 2.1. Chu kỳ lặp lai của phép biến đổi tương ứng với kich thước N ............ 25
Bảng 2.2. Cac tiêu chi đanh gia theo thang ODG ................................................ 28
Bảng 3.1. Gia tri SNR khi thực hiện giấu kết hợp mã Hamming ......................... 47
Bảng 3.2. Phat hiện thay đổi tin mật trên tệp mang tin ........................................ 48
Bảng 3.3. Bảng gia tri SNR khi giấu tin theo phương phap điều chỉnh nhóm bit 55
Bảng 3.4. Bảng gia tri SNR khi giấu tin vào trong cac tệp theo kỹ thuật MCPT . 63
Bảng 3.5. Bảng gia tri SNR khi giấu tin theo thuật toan điều chỉnh môt bit ........ 71
Bảng 3.6. Bảng gia tri SNR khi thêm tiếng vọng để giấu tin ................................ 76
Bảng 4.1. Gia tri cac mẫu trước và sau khi giấu cac bit ...................................... 82
Bảng 4.2. Tỉ lệ bit sai khi tấn công thêm nhiễu .................................................... 84
Bảng 4.3. Bảng gia tri SNR khi điều chỉnh biên đô để giấu tin ............................ 85
Bảng 4.4. Bảng gia tri SNR và NCC khi giấu tin ................................................. 89
Bảng 4.5. Bảng gia tri NCC khi thêm nhiễu trắng ............................................... 90
Bảng 4.6. Bảng gia tri NCC khi thêm nhiễu hat tiêu và nhiễu đôm ..................... 90
viii
Danh mục các hình vẽ, đồ thị
Hình 1.1. Sơ đồ của hệ giấu tin ............................................................................... 8
Hình 1.2. Mối quan hệ giữa ba yếu tố chất lượng – dung lượng – bền vững ....... 10
Hình 1.3. Phân loại giấu tin dựa vào mục đích ứng dụng .................................... 10
Hình 1.4. Hệ thống thính giác của con người [66] ............................................... 13
Hình 1.5. Dải tần của âm thanh ............................................................................ 14
Hình 1.6 Ngưỡng che của tín hiệu âm thanh ....................................................... 15
Hình 1.7. Che khuất âm thanh trên miền tần số [74] ............................................ 15
Hình 1.8. Che khuất âm thanh trên miền thời gian [74] ....................................... 15
Hình 1.9. Kỹ thuật làm giảm hao hụt tín hiệu trên đường truyền [80] ................. 17
Hình 1.10. Chuyển âm thanh dạng tương sang dạng số ....................................... 18
Hình 1.11. Lượng tử hoá và biểu diễn dạng số tín hiệu tương tự [80] ................. 18
Hình 2.1. Phân giải tín hiệu thành 2 thành phần xấp xỉ và chi tiết ....................... 23
Hình 2.2. Tín hiệu gốc và tín hiệu đã loại bỏ thành phần D ................................. 24
Hình 2.3. Ảnh gốc và sau khi thực hiện chuyển đổi. ............................................ 25
Hình 2.4. Điều chỉnh bit thấp nhất của mẫu để giấu bit 1 .................................... 29
Hình 2.5. Điều chỉnh mẫu để giấu bit 1 trong khối theo phương pháp chẵn lẻ .... 30
Hình 2.6. Sự dịch chuyển pha của tín hiệu ........................................................... 31
Hình 2.7. Tín hiệu gốc và tín hiệu sau khi dịch chuyển pha 𝜋/2 ......................... 32
Hình 2.8. Hiện tượng không liên tục về pha ......................................................... 33
Hình 2.9. Các thành phần trong tiếng vọng của tín hiệu [32] ............................... 33
Hình 2.10. Xử lý (lọc) mỗi khối để giải tin trong kỹ thuật trải phổ ..................... 36
Hình 2.11. Biên độ và năng lượng của tín hiệu [32] ............................................ 37
Hình 2.12. Sơ đồ điều chỉnh giá trị [32] ............................................................... 38
Hình 2.13. Điều chỉnh độ dốc để giấu thông tin [32] ........................................... 39
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. ........ 40
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 ..... 41
Hình 3.1. Minh hoạ mã Hamming với 4 bit dữ liệu và 3 bit kiểm tra chẵn lẻ...... 44
Hình 3.2. Ma trận sinh và ma trận kiểm tra của mã Hamming (7, 4) ................... 44
ix
Hình 3.3. Dữ liệu âm thanh gốc và dữ liệu có chứa tin mật ................................. 48
Hình 3.4. Độ sai khác khi điều chỉnh bit thứ 3 của mẫu dữ liệu .......................... 50
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 ............. 51
Hình 3.6. Đoạn dữ liệu tệp âm thanh gốc (trên) và tệp có chứa tin mật (dưới).... 55
Hình 3.7. Minh hoạ kỹ thuật padding ................................................................... 56
Hình 3.8. Vị trí các byte sau khi xáo trộn ............................................................. 57
Hình 3.9. Sơ đồ giấu tin ........................................................................................ 58
Hình 3.10. Ma trận F và A tương ứng từ các mẫu dữ liệu .................................... 60
Hình 3.11. Kết quả XOR 4 cột đầu tiên của từng hàng ........................................ 60
Hình 3.12. Kết quả XOR 4 dòng đầu tiên của từng cột ........................................ 60
Hình 3.13. Kết quả XOR của chuỗi C và chuỗi R ................................................ 60
Hình 3.14. Kết quả giấu 4 bit 0110 trong khối F .................................................. 61
Hình 3.15. Kết quả giấu 4 bit 0111 trong khối F .................................................. 61
Hình 3.16. Kết quả giấu 4 bit 1100 trong khối F .................................................. 61
Hình 3.17. Kết quả giấu 4 bit 1101 trong khối F .................................................. 62
Hình 3.18. Ảnh gốc và ảnh sau khi chuyển đổi để giấu tin .................................. 62
Hình 3.19. Tín hiệu âm thanh trước (trên) và sau khi giấu tin (dưới) .................. 62
Hình 3.20. Sử dụng ký tự bù cho chuỗi tin mật .................................................... 64
Hình 3.21. Chuỗi tin gốc và chuỗi sau khi hoán vị .............................................. 65
Hình 3.22. Khôi phục lại chuỗi gốc từ chuỗi hoán vị ........................................... 65
Hình 3.23. Các giá trị của đoạn âm thanh gồm 256 mẫu ..................................... 66
Hình 3.24. Giá trị của dãy Q tương ứng với các mẫu ........................................... 67
Hình 3.25. Giá trị XOR_sum của dãy Q qua các bước tính ................................. 67
Hình 3.26. Giá trị mới của dãy S .......................................................................... 68
Hình 3.27. Sơ đồ giấu tin dùng XOR_sum của khối ............................................ 69
Hình 3.28. Sóng, phổ của âm thanh trước (trái) và sau khi giấu (phải) ............... 70
Hình 3.29. Biên độ của âm thanh gốc và âm thanh được thêm echo ................... 73
Hình 3.30. Cepstrum của âm thanh gốc và âm thanh được thêm tiếng vọng. ...... 73
Hình 3.31. Phổ biên độ một đoạn của âm thanh trước và sau khi giấu ................ 76
x
Hình 4.1. Biểu diễn số phức trong hệ toạ độ cực.................................................. 79
Hình 4.2. Điều chỉnh giá trị để giấu 1 bit ............................................................. 80
Hình 4.3. Biên độ đoạn đầu tiên của tệp mang tin ................................................ 83
Hình 4.4. Biên độ của tệp gốc và tệp mang tin ..................................................... 84
Hình 4.5. Ảnh kết quả thu được khi giải tin tương ứng với các tỉ lệ gây nhiễu ... 84
Hình 4.6. Âm thanh gốc và âm thanh chứa tin giấu ............................................. 89
Hình 4.7. Ảnh được giấu và ảnh thu được khi chịu các tấn công thêm nhiễu ...... 90
1
MƠ ĐÂU
Thông tin số thể hiện rõ những ưu điểm vượt trội, như dễ dàng lưu trữ, sao
chép, chuyển tải, khôi phục và tăng cường chất lượng thông tin. Cùng với đó là sự
phát triển của các thiết bị số, cơ sở hạ tầng và mạng internet, làm cho chúng ta rất dễ
dàng tìm kiếm, sao chép và trao đổi thông tin. Bên cạnh những tiện ích mà thông tin
số và mạng internet mang lại cũng nảy sinh nhiều vấn đề mới, thách thức mới đòi hỏi
chúng ta phải nghiên cứu và giải quyết. Đó là trình trạng xâm nhập trái phép dữ liệu,
lấy cắp, xuyên tạc thông tin, vi phạm và tranh chấp bản quyền các dữ liệu số [53].
Những vấn nạn, thách thức đó không chỉ riêng cho quốc gia, cá nhân, công ty hay
doanh nghiệp nào mà là của tất cả mọi người sống trong thời đại công nghệ số.
Ơ Việt Nam, nhiều văn bản pháp luật đã được Quốc hội ban hành nhằm đảm
bảo chủ quyền số, làm chủ không gian mạng, góp phần bảo đảm quốc phòng, an ninh
đất nước. Một số luật tiêu biểu như Luật an ninh quôc gia số 32/2004/QH11 được
Quốc hội thông qua ngày 03/12/2004; Luật Giao dich điện tử số 51/2005/QH11 được
Quốc hội thông qua ngày 29/11/2005; Luật Công nghệ thông tin số 67/2006/QH11
được Quốc hội thông qua ngày 29/6/2006; Luật an toàn thông tin mang đã được Quốc
hội thông qua ngày 19/11/2015 và có hiệu lực từ ngày 1/7/2016...Thủ tướng Chính
phủ cũng ban hành quyết định số 63/QĐ-TTg ngày 13/01/2010 về việc phê duyệt Quy
hoach phat triển an toàn thông tin sô quôc gia đến năm 2020. Ngoài hệ thống luật,
văn bản pháp qui chúng ta cần phải có những biện pháp kỹ thuật để bảo mật dữ liệu,
đảm bảo an toàn thông tin.
Bảo mật dữ liệu (data security) có nghĩa là bảo vệ dữ liệu trước các hành vi
phá hoại hay các hành vi không mong muốn khác từ những người không được quyền.
Các giải pháp hay được dùng để bảo mật dữ liệu là mã hoá đĩa (disk encryption), sao
lưu (backup), sử dụng các thiết bị đăng nhập hệ thống, bảo mật đường truyền, che
giấu dữ liệu (data masking, gồm mật mã và giấu thông tin). Trong các giải pháp đó,
giải pháp che giấu dữ liệu được sử dụng nhiều.
Trong một thời gian dài, mã hóa dữ liệu được sử dụng như một giải pháp
chính để quyết vấn đề bảo mật thông tin. Mã hóa thực hiện chuyển đổi dữ liệu từ bản
2
rõ sang một định dạng khác không thể đọc được, gọi là bản mã, để có thể ngăn cản
những truy cập bất hợp pháp khi trao đổi dữ liệu. Nhiều hệ mã khác nhau, bao gồm
hệ mật mã khóa đối xứng và hệ mật mã khóa công khai, đã được nghiên cứu và triển
khai rất hiệu quả trong thực tế như hệ mã DES, RSA.
Chúng ta còn có cách khác để bảo vệ thông tin, đó là thực hiện các giao dịch
ngầm bên trong các giao dịch công khai, gọi là giấu tin (data hiding) hay giấu thông
tin. Giấu tin là một kỹ thuật nhúng (giấu) một lượng thông tin số nào đó vào trong
một đối tượng dữ liệu số khác. Giấu tin khác mã hoá ở chỗ là giấu tin giấu đi sự hiện
diện của thông tin trong khi mã hoá giấu đi ý nghĩa của thông tin.
Giấu thông tin nhằm hai mục đích, một là bảo mật cho dữ liệu được đem giấu,
hai là bảo mật cho chính đối tượng được dùng để chứa tin. Hai khía cạnh khác nhau
này dẫn đến hai khuynh hướng kỹ thuật chủ yếu của giấu tin. Khuynh hướng thứ nhất
là giấu tin mật (steganography), tập trung vào các kỹ thuật giấu tin sao cho thông tin
giấu được nhiều và quan trọng là người thám tin khó phát hiện được một đối tượng
có chứa tin giấu bên trong hay không. Khuynh hướng thứ hai là thuỷ vân số
(watermarking), nghiên cứu cách thức đánh dấu đối tượng chứa nhằm khẳng định bản
quyền sở hữu hay phát hiện xuyên tạc thông tin. Nhiều kiểu dữ liệu số có thể được
chọn làm dữ liệu chứa cho bài toán giấu tin, như ảnh, video, âm thanh, văn bản, hay
các gói tin được truyền trong mạng.
Giấu tin là một chủ đề đã được nghiên cứu lâu dài nhưng luôn thời sự trên thế
giới. Nhiều cuốn sách về giấu tin, các kỹ thuật giấu tin trong nhiều kiểu dữ liệu khác
nhau đã được công bố, tiêu biểu là cuốn sách về Các kỹ thuật giấu thông tin dùng cho
giấu tin mật và thủy vân số [65] của các tác giả Stefan Katzenbeisser và Fabien A. P.
Petitcolas công bố năm 2000; cuốn sách về Các kỹ thuật thủy vân âm thanh, các kỹ
thuật thủy vân thông minh [32] của Hyoung Joong Kim và các cộng sự công bố năm
2004; cuốn sách về Các công nghệ và kỹ thuật thủy vân âm thanh số: Các ứng dụng
và các tiêu chuẩn [54] của tác giả Nedeljko Cvejic và Tapio Seppänen công bố năm
2008; cuốn sách về Bảo mật đa phương tiện: Các kỹ thuật giấu tin mật và thủy vân
số để bảo vệ sở hữu trí tuệ [19] của tác giả Chun-Shien Lu công bố năm 2005, cuốn
3
sách về Thủy vân số và Giấu tin mật [33] của tác giả Ingemar J. Cox công bố năm
2008; cuốn sách về Các kỹ thuật tiên tiến các ứng dụng thủy vân đa phương tiện ảnh
âm thanh và video [8] của tác giả Ali Mohammad Al-Ha công bố năm 2010; hai cuốn
sách của tác giả Xing He về Các kỹ thuật thủy vân số trong âm thanh và Xử lý tín
hiệu, Mã hóa tri giác và Thủy vân âm thanh số công bố lần lượt vào các năm 2008 và
2011…Có nhiều hội thảo chuyên về giấu tin đã được tổ chức hằng năm, chẳng hạn
như "International Workshop on Digital-forensics and Watermarking" [82] đã được
tổ chức tới lần thứ 15 vào năm 2016 tại Trung Quốc. Tạp chí dành riêng cho giấu tin
là “Transactions on Data Hiding and Multimedia Security” [87] đã phát triển liên tục
từ năm 2006. Mặc dù đã có lịch sử lâu nhưng giấu tin hiện nay vẫn nhận được sự
quan tâm của cộng đồng nghiên cứu về giấu tin nói riêng và an toàn thông tin nói
chung, thể hiện qua các chủ đề tại các hội nghị quốc tế hằng năm, số lượng các bài
báo được trình bày tại các Hội nghị hằng năm và trên các Tạp chí khoa học. So với
giấu tin trong ảnh, số lượng bài báo công bố liên quan đến giấu tin trong âm thanh ít
hơn, nguyên nhân là do dữ liệu ảnh xuất hiện thường xuyên (trong các ứng dụng,
website) hơn so với âm thanh và do hệ thống thị giác con người ít nhạy hơn so với hệ
thống thính giác, do đó dễ khai thác để giấu tin. Đã có một số luận án thực hiện nghiên
cứu về giấu tin, như của giáo sư MinWu [52], và chuyên về giấu tin trong âm thanh
như của tác giả Nedeljko Cvejic [20].
Tương tự như giấu tin trong ảnh, giấu tin trong âm thanh có thể phân loại thành
giấu trực tiếp trên các mẫu dữ liệu âm thanh hoặc trên miền biến đổi. Trong [21, 22,
23, 69] trình bày các kỹ thuật sử dụng phương pháp điều chỉnh các bit ít quan trọng
của mẫu dữ liệu biểu diễn âm thanh để giấu tin. Trong [76] trình bày kỹ thuật giấu tin
sử dụng patchwork. Trong [72] trình bày thuật toán giấu dựa vào phân tích đặc trưng
của dữ liệu chứa. Một số nghiên cứu dựa vào đặc trưng không phân biệt được sự thay
đổi về pha của hệ thống thính giác con người để giấu tin, như trong các nghiên cứu
[55, 71]. Một số nghiên cứu giấu tin trong tệp âm thanh dựa vào kỹ thuật nén của
định dạng của tệp, như [59] áp dụng để giấu cho định dạng nén mp3, trong [60] áp
dụng để giấu cho định dạng PCM. So với miền thời gian, các thuật toán giấu trên
4
miền tần số có độ bền vững cao hơn. Các nghiên cứu được trình bày trong [27, 41,
49, 50, 51] thực hiện giấu tin trên miền tần số, sử dụng phép biến đổi Fourier. Một
miền biến đổi khác cũng được dụng để giấu tin là miền biến đổi wavelet, được trình
bày trong các nghiên cứu [29, 75]. Một số phương pháp giấu sử dụng kỹ thuật trải
phổ tín hiệu trong ngành viễn thông để giấu tin như trong [26, 46, 45].
Về tình hình nghiên cứu trong nước, hiện đã có một số luận án tiến sĩ nghiên
cứu về lĩnh vực giấu tin. Luận án của tác giả Vũ Ba Đình [1] nghiên cứu về giấu tin
trong ảnh, cụ thể là bản đồ số. Luận án của tác giả Nguyễn Ngọc Hà [2], Nguyễn Văn
Tảo [5] nghiên cứu về giấu tin trong ảnh và các ứng dụng của giấu tin. Tác giả Nguyễn
Hải Thanh đã phát triển các thuật toán giấu tin trong ảnh và ứng dụng trong mã đàn
hồi [4]. Tác giả Lưu Thị Bích Hường trong luận án của mình đã nghiên cứu và phát
triển các kỹ thuật thủy vân trên cơ sở dữ liệu quan hệ [3]. Một số tác giả khác cũng
chọn đề tài nghiên cứu về lĩnh vực giấu tin trong ảnh làm đề tài luận án và đang trong
giai đoạn hoàn thành. Chủ đề giấu tin cũng đang được một số nhóm nghiên cứu tại
các trường đại học quan tâm, như nhóm nghiên cứu tại Đại học Khoa học tự nhiên
thành phố Hồ Chí Minh, nhóm nghiên cứu tại Đại học giao thông vận tải, nhóm
nghiên cứu tại Đại học Hải Phòng. Các luận án trong nước trước đây chủ yếu chọn
ảnh làm dữ liệu chứa, chưa có luận án nghiên cứu về lĩnh vực giấu tin trong âm thanh.
Giấu tin trong âm thanh cũng đã được một số tác giả khác nghiên cứu, tuy nhiên số
lượng các bài báo công bố bằng tiếng Việt trên các tạp chí khoa học và hội nghị, hội
thảo quốc gia vẫn còn ít. Mặc dù trên thế giới, các nghiên cứu về giấu tin trong dữ
liệu đa phương tiện nói chung và dữ liệu âm thanh nói riêng là không mới, nhưng đối
với chúng ta, việc nghiên cứu và nắm rõ các kỹ thuật giấu tin là cần thiết, giúp chúng
ta chủ động về mặt kỹ thuật và có những biện pháp để quản lý, theo dõi, phát hiện
trao đổi tin.
Hiện nay vẫn còn một số vấn đề về giấu tin trong âm thanh cần phải được
nghiên cứu và giải quyết. Thứ nhất là vấn đề về giấu tin sao cho ít làm thay đổi dữ
liệu chứa nhất. Vấn đề thứ hai là kiểm tra lại tin giấu bên trong có bị thay đổi, có thể
do chủ ý của người thám tin hay do nhiễu, hay không. Vấn đề tiếp theo là nghiên cứu
5
cách giấu sao cho người thám tin không phát hiện được dữ liệu có chứa tin và rất khó
lấy được tin giấu nếu như không biết khóa. Vấn đề cuối cùng là nghiên cứu cách bảo
vệ tin giấu trong dữ liệu mang tin trước các tấn công hay giấu sao cho tin giấu bền
vững nhất có thể.
Trên cơ sở đó, luận án tập trung nghiên cứu theo hướng chọn dữ liệu chứa là
dữ liệu âm thanh và giấu tin nhằm mục đích bảo vệ tin mật.
Cụ thể, luận án tập trung nghiên cứu các vấn đề sau:
1) Nghiên cứu các phương pháp hỗ trợ việc không nhận tin sai trong quá trình
giải tin và các cách chọn các mẫu tín hiệu âm thanh không theo quy luật để
giấu các bit tin, làm cho người thám tin khó phát hiện tin.
2) Nghiên cứu và áp dụng các kỹ thuật điều chỉnh mẫu dữ liệu để giấu tin.
3) Trình bày một số cải tiến cho bài toán giấu tin trong âm thanh.
Với mục tiêu đặt ra như vậy, luận án đã đạt được một số kết quả, góp một phần
nhỏ vào lĩnh vực nghiên cứu giấu tin. Các kết quả chính của luận án như sau:
Đề xuất sử dụng mã hỗ trợ xác thực để tránh trường hợp nhận tin sai nếu tệp
chứa tin giấu bị tấn công làm thay đổi nội dung tin giấu, cách chọn mẫu dữ
liệu, vị trí bit trong mẫu dữ liệu cần điều chỉnh để thực hiện giấu tin, áp dụng
các phương pháp giấu tin trên dữ liệu đa phương tiện vào trường hợp cụ thể là
âm thanh. Trong kỹ thuật cũng đưa ra cách điều chỉnh các bit để sự sai khác
giữa các mẫu trên tệp gốc và tệp chứa tin giấu là ít nhất. Kết quả được đăng tải
trong Tạp chí Khoa học Tự nhiên và Công nghệ, Tạp chí Khoa học ĐHQG Hà
Nội năm 2009, 2013 và đăng tải trong kỷ yếu Hội nghị quốc tế IEEE SoCPaR
2013 và hội nghị quốc tế IEEE ATC 2014 tại Hà Nội.
Đề xuất cải tiến kỹ thuật giấu tin sử dụng tiếng vọng của một tác giả trước đó.
Kết quả nghiên cứu được trình bày và đăng tải trong kỷ yếu Hội nghị quốc tế
ICIEIS năm 2013 tại Malaysia.
Đề xuất hai phương pháp điều chỉnh mẫu dữ liệu trên miền tần số để giấu tin.
Phương pháp thứ nhất lựa chọn và điều chỉnh các hệ số trên miền tần số của
tín hiệu âm thanh, sử dụng phép biến đổi Fourier. Phương pháp thứ hai điều
6
chỉnh giá trị trung bình của các đoạn dữ liệu, sử dụng phép biến đổi wavelet.
Kết quả nghiên cứu được đăng trong kỉ yếu hội nghị tại Hội nghị quốc tế IEEE
DICTAP năm 2014 tại Thái Lan và đã được đăng trên Tạp chí Khoa học Công
nghệ, Đại học Đà Nẵng năm 2016.
Bố cục của luận án bao gồm phần mở đầu, bốn chương nội dung, kết luận và
danh mục các tài liệu tham khảo. Chương 1 của luận án trình bày về một số khái niệm
cơ bản trong giấu tin, tính chất và ứng dụng của giấu tin. Trong chương này cũng
trình bày về cách biểu diễn, lưu trữ âm thanh số trên máy tính, đặc điểm và những
hạn chế của hệ thống thính giác của con người, là cơ sở có thể giấu tin vào trong âm
thanh. Chương 2 của luận án trình bày các phương pháp giấu tin cơ sở dùng để giấu
tin trong âm thanh cùng một số nhận xét được tác giả tổng hợp từ các tài liệu tham
khảo. Trong chương 2 cũng trình bày các kỹ thuật bổ trợ thường được dùng trong
giấu tin, một số độ đo dùng để đánh giá các kỹ thuật giấu tin. Các kỹ thuật bổ trợ và
các độ đo được trình bày trong chương 2 được sử dụng trong các chương tiếp theo
của luận án. Chương 3 trình bày về các phương pháp giấu tin trên miền thời gian. Nội
dung chương này được tổng hợp từ năm bài báo. Các phương pháp giấu tin trong
chương này được thực hiện bằng cách điều chỉnh một mẫu hoặc nhóm các mẫu biểu
diễn dữ liệu âm thanh. Đây là các phương pháp thích hợp cho ứng dụng giấu tin mật.
Chương 4 trình bày hai phương pháp giấu trên miền tần số, được tổng hợp từ hai bài
báo. So với các phương pháp giấu tin ở chương 3, hai phương pháp ở chương 4 có tỉ
lệ dữ liệu thấp hơn nhưng có thể chịu được một số tấn công cơ bản. Phương pháp thứ
nhất thực hiện trên miền tần số thực hiện phép biến đổi Fourier, cho phép giấu 8 bit
dữ liệu trong đoạn 512 mẫu. Phương pháp thứ hai thực hiện giấu dữ liệu trên miền
tần số sử dụng phép biến đổi wavelet, dựa vào giá trị trung bình của đoạn. Hai phương
này có thể được dùng để giấu tin mật, được dùng trong trường hợp dữ liệu mang tin
có thể phải chịu tấn công nhiễu. Phần kết luận của luận án trình bày những kết quả
đạt được, những hạn chế của luận án và hướng phát triển tiếp theo.
7
Chương 1. GIẤU THÔNG TIN VÀ GIẤU TIN
TRONG ÂM THANH
Chương này của luận án trình bày những nội dung chung về giấu thông tin và
giấu tin trong âm thanh. Bên cạnh trình bày các yêu cầu và ứng dụng của giấu tin,
chương này cũng trình bày cách biểu diễn âm thanh số, các đặc trưng cơ bản của âm
thanh số, tính chất của hệ thống thính giác của con người, là cơ sở để có thể thực hiện
được giấu tin trong âm thanh.
1.1. Giấu thông tin
1.1.1. Lịch sử giấu thông tin
Từ giấu thông tin (steganography) bắt nguồn từ Hi Lạp và được sử dụng cho
tới ngày nay, có nghĩa là tài liệu được phủ (covered writing) [58]. Một câu chuyện về
thời Hy-Lạp cổ đại do Herodotus ghi lại kể về giấu thông tin. Demeratus, một người
Hy-Lạp, cần thông báo cho Sparta rằng Xerxes định xâm chiếm Hy-Lạp. Để tránh bị
phát hiện, Demeratus đã bóc lớp sáp ra khỏi các viên thuốc và khắc thông báo lên bề
mặt các viên thuốc này, sau đó bọc lại các viên thuốc bằng một lớp sáp mới. Bằng
cách này, những viên thuốc được để ngỏ và lọt qua mọi sự kiểm tra một cách dễ dàng.
Người Romans cổ đã dùng mực không màu để viết các thông báo bí mật giữa
những hàng văn tự thông thường. Khi bị hơ nóng, những dòng chữ được viết từ loại
mực này se trở nên sẫm màu và có thể đọc được.
Công nghệ thông tin đã tạo ra những môi trường giấu tin mới vô cùng tiện lợi
và phong phú. Ta có thể giấu tin trong văn bản, ảnh, âm thanh, video, các tệp cơ sở
dữ liệu hoặc thậm chí trong các gói tin được truyền trên đường truyền mạng.
Ý tưởng về che giấu thông tin đã có từ rất lâu nhưng kỹ thuật này được dùng
chủ yếu trong quân đội và trong các cơ quan tình báo. Ngày nay giấu tin không chỉ
dùng cho mục đích an ninh, quân sự mà còn để phục vụ các mục đích tích cực như
bảo vệ bản quyền các tài liệu số, kiểm soát sao chép.
1.1.2. Các thành phần của hệ giấu tin
Một hệ giấu tin gồm có các thành phần chính sau đây:
8
+ Thông điệp mật (secret message): có thể là văn bản, hình ảnh, âm thanh. Trong quá
trình giấu tin, chúng được chuyển thành chuỗi các bit.
+ Dữ liệu chủ hay môi trường se chứa tin mật (host signal): dữ liệu có thể chọn làm
dữ liệu chủ là tệp ảnh, tệp âm thanh, tệp video hay tệp cơ sở dữ liệu, văn bản.
+ Khoá K: là khóa tham gia vào quá trình giấu tin để tăng tính bảo mật.
+ Dữ liệu mang tin hay môi trường đã chứa tin mật (stego signal).
Sơ đồ của một hệ giấu tin như sau :
Hình 1.1. Sơ đồ của hệ giấu tin
1.1.3. Các yêu cầu của hệ giấu tin
Có nhiều phương pháp giấu tin cho những kiểu dữ liệu khác nhau. Để đánh
giá chất lượng của một phương pháp giấu tin, người ta dựa vào một số tiêu chí sau:
1.1.3.1. Tính “vô hình”
Khi giấu tin vào trong các dữ liệu chủ se làm thay đổi ít nhiều dữ liệu chủ. Nếu
phương pháp giấu tin tốt, se làm cho thông tin mật trở nên “vô hình” trên dữ liệu
mang tin và người ta “khó có thể” nhận ra trong dữ liệu mang tin có chứa tin mật hay
không. Đối với phương pháp giấu tin trong ảnh, tính vô hình thể hiện ở việc không
nhìn thấy, không phân biệt được sự khác nhau giữa ảnh gốc và ảnh chứa tin giấu. Đối
với phương pháp giấu tin trong âm thanh, tính vô hình thể hiện ở chỗ không phân biệt
được sự khác nhau khi nghe tệp âm thanh gốc và tệp âm thanh chứa tin.
1.1.3.2. Khả năng chống giả mạo
Mục đích của “giấu tin” là để truyền đi thông tin mật. Nếu không thể do thám
tin mật, thì người thám tin cũng cố tìm cách làm sai lạc tin mật, làm giả mạo tin mật
Quá trình
Giấu tin
Quá trình
Giải tin
Khoá Khoá
Dữ liệu chủ
Dữ liệu
mang tin
Môi trường
mạng
Thông điệp mật
Dữ liệu chủ
Thông điệp mật
9
để gây bất lợi cho đối phương. Một phương pháp giấu tin tốt se đảm bảo tin mật
không bị tấn công một cách có chủ đích trên cơ sở những hiểu biết đầy đủ về thuật
toán giấu tin (nhưng không biết khoá) và có tệp mang tin. Đối với lĩnh vực thủy vân
số thì khả năng chống giả mạo là đặc tính vô cùng quan trọng, vì có như vậy mới bảo
vệ được bản quyền, chứng minh tính pháp lý của sản phẩm (người khác không thể
hay rất khó có thể thay đổi thông tin bản quyền trên sản phẩm).
1.1.3.3. Tính bền vững
Sau khi tin được giấu vào đối tượng chứa, các tệp mang tin được truyền qua
các kênh công cộng và có thể phải qua hay chịu các biến đổi khác nhau, chẳng hạn
như phép lọc, thêm nhiễu, cắt bớt dữ liệu hay lấy mẫu lại. Tính bền vững thể hiện ở
sự nguyên vẹn, không thay đổi (hay thay đổi không đáng kể) của thông tin được giấu
sau những biến đổi như vậy.
1.1.3.4. Dung lượng tin giấu
Dung lượng tin giấu được tính bằng tỷ lệ của lượng tin cần giấu so với kích
thước đối tượng gốc. Các phương pháp giấu tin mật đều cố gắng giấu được càng nhiều
tin trong dữ liệu gốc càng tốt nhưng vẫn giữ được bí mật.
1.1.3.5. Độ phức tạp tính toán
“Độ phức tạp” của thuật toán giấu và giải tin cũng là một chỉ tiêu quan trọng
để đánh giá một phương pháp giấu tin. Chỉ tiêu này cho chúng ta biết “tài nguyên”
(thời gian và bộ nhớ) tốn bao nhiêu dùng cho một phương pháp giấu tin. Với người
có quyền trong hệ thống giấu tin thì thời gian thực hiện phải “nhanh”, nhưng với
người thám tin thì việc giải tin phải là bài toán “khó”.
Ba thuộc tính quan trọng mà một hệ giấu tin nào cũng mong muốn đạt cao
nhất, đó là chất lượng, số lượng và tính bền vững. Thuộc tính chất lượng yêu cầu sự
sai khác giữa dữ liệu gốc và dữ liệu mang tin càng ít càng tốt. Thuộc tính số lượng
yêu cầu giấu càng nhiều tin càng tốt. Thuộc tính bền vững yêu cầu khó thay đổi hay
xóa tin giấu trong dữ liệu mang tin. Tuy nhiên ba đặc tính này lại ảnh hưởng lẫn nhau,
khi đề cao một đặc tính này thì se ảnh hưởng đến các đặc tính còn lại. Ví dụ, khi ta
muốn giấu nhiều tin hơn vào trong một ảnh thì ta phải thay đổi nhiều điểm ảnh hơn
10
để giấu tin, dẫn đến chất lượng của ảnh chứa tin se giảm hơn so với ảnh gốc. Các ứng
dụng thủy vân quan tâm nhiều đến thuộc tính bền vững trong khi ứng dụng giấu tin
mật quan tâm nhiều đến thuộc tính dung lượng. Mối quan hệ giữa ba thuộc tính thể
hiện như hình 1.2. Khi ta tăng dung lượng (số lượng bit) giấu thì ảnh hưởng đến chất
lượng tệp mang tin, hay khi tăng tính bền vững của tin giấu thì phải giảm dung lượng
giấu cũng như giảm chất lượng tệp mang tin.
Hình 1.2. Môi quan hệ giữa ba yếu tô chất lượng – dung lượng – bền vững
1.1.4. Phân loại giấu tin
Giấu tin có thể phân loại theo đặc trưng, tính chất và ứng dụng. Ta có thể phân
loại các kỹ thuật giấu tin theo kiểu tài liệu dùng làm dữ liệu chứa (văn bản, ảnh, âm
thanh, video..), theo miền xử lý (miền dữ liệu trực tiếp hay miền biến đổi), hay theo
mục đích giấu tin.
Hình 1.3. Phân loai giấu tin dựa vào mục đich ứng dụng
Chất lượng (quality)
Bền vững (robustness)
Dung lượng (capacity)
Infomation hiding
Giấu thông tin
Robust Copyright marking
Thuỷ vân bền vững
Imperceptible Watermarking
Thuỷ vân không nhìn thấy được
Steganography
Giấu tin mật
Watermarking
Thuỷ vân số
Fragile Watermarking
Thuỷ vân “dễ vỡ”
Visible Watermarking
Thuỷ vân có thể nhìn thấy được
11
Nếu phân theo mục đích giấu tin thì ta có giấu tin mật và thủy vân số. Giấu tin
mật (steganography) là kỹ thuật nhúng “mẩu tin mật” vào “môi trường giấu tin” (môi
trường phủ). Trong quá trình giấu tin ta có thể dùng khoá (stego-key) để tăng tính bảo
mật. Trong giấu tin mật, khoá không phải dùng để mã hóa mẩu tin mà thường được
dùng để xác định vị trí “rải tin mật” vào môi trường giấu tin. Mục đích của giấu tin
mật là bảo vệ thông tin được giấu. Thuỷ vân số là kỹ thuật nhúng “dấu ấn số” vào
một “tài liệu số” nhằm chứng thực (đánh dấu, xác thực) nguồn gốc hay chủ sở hữu
của “tài liệu số” này. Như vậy mục đích của thuỷ vân số là bảo vệ môi trường giấu
tin, bằng cách biến tin giấu thành một thuộc tính của vật mang tin [33].
Các kỹ thuật giấu tin được trình bày trong luận án được phân loại theo miền
xử lý, bao gồm miền dữ liệu của âm thanh (miền thời gian) và miền biến đổi.
1.1.5. Tấn công hệ thống giấu tin
Tấn công một hệ giấu tin bao gồm các phương pháp để phát hiện, phá huỷ,
trích rút hay sửa đổi tin giấu trong dữ liệu mang. Việc nghiên cứu các biện pháp của
những người thám tin se hữu ích cho việc thiết kế một hệ giấu tin tốt.
Việc tấn công được coi là thành công hay không tuỳ theo ứng dụng. Đối với
liên lạc bí mật, việc phát hiện và chứng minh được một đối tượng có chứa tin mật
được coi là thành công. Đối với bảo vệ bản quyền hay chống giả mạo, thì việc tấn
công được coi là thành công nếu không chỉ phát hiện ra thuỷ vân mà còn có thể phá
huỷ hay sửa đổi nó.
Các thuật toán tấn công hệ giấu tin cũng tương tự như các thuật toán tấn công
các hệ mã. Nếu như người thám tin có tệp gốc thì se thực hiện so sánh từng bit với
tệp nghi ngờ chứa tin giấu để tìm thông tin mật. Đó là lý do tại sao những tệp quá phổ
biến (tệp âm thanh trong các CD hay các tệp ảnh trên Internet) thường không được
sử dụng làm đối tượng chứa. Một số tấn công thường gặp là phân tích tệp chứa tin để
tìm và/hoặc xóa tin, đối sánh với dữ liệu gốc để lấy hoặc thay thế tin mật, chuyển
định dạng, nén, thêm nhiễu để làm mất tin …Sức mạnh của một thuật toán giấu tin
phụ thuộc vào khả năng vượt qua các tấn công.
12
1.1.6. Các ứng dụng của giấu tin
1.1.6.1. Liên lạc bí mật
Giấu tin có thể được sử dụng để liên lạc bí mật giữa người gửi và người nhận.
Nếu chúng ta dùng phương pháp mã hóa thì bản mã của tin mật có thể gây ra sự chú
ý cho người thám mã. Tuy nhiên nếu ta giấu tin mật vào trong môi trường nào đó rồi
gửi đi trên mạng máy tính se ít gây ra sự chú ý hơn. Hiện nay người ta phối hợp đồng
thời nhiều giải pháp để truyền tin mật trên mạng công khai: Đầu tiên tin mật được
nén, sau đó se thực hiện mã hóa và cuối cùng giấu bản mã vào trong môi trường chứa.
1.1.6.2. Bảo vệ bản quyền (copyright protection)
Đây là ứng dụng cơ bản nhất của kỹ thuật thuỷ vân số. Một thông tin nào đó
mang ý nghĩa quyền sở hữu tác giả se được nhúng vào trong các sản phẩm. Việc
nhúng thuỷ vân cần phải đảm bảo không để lại một ảnh hưởng lớn nào đến việc cảm
nhận sản phẩm. Yêu cầu kỹ thuật đối với ứng dụng này là thuỷ vân phải tồn tại bền
vững cùng với sản phẩm, muốn bỏ thuỷ vân mà không được phép của người sở hữu
thì chỉ có cách phá huỷ sản phẩm.
1.1.6.3. Nhận thực hay phát hiện xuyên tạc thông tin (authentication and
tamper detection)
Đối với ứng dụng này, một tập các thông tin se được giấu trong dữ liệu chứa
và sau đó được sử dụng để nhận biết xem dữ liệu chứa đó có bị thay đổi hay không.
Yêu cầu chung đối với ứng dụng này là khả năng giấu thông tin nhiều và thuỷ vân
không cần bền vững trước các phép xử lý trên đối tượng đã được giấu tin.
1.1.6.4. Ghi dấu vân tay (fingerprinting)
Mục tiêu của ghi dấu vân tay là để chuyển thông tin về người nhận sản phẩm
phương tiện số nhằm xác định đây là bản sao duy nhất của sản phẩm. Về mặt ý nghĩa,
ghi dấu vân tay tương tự như số xê ri của phần mềm. Mỗi một sản phẩm se mang một
thuỷ vân riêng và được nhúng vào các bản copy khác nhau của thông tin gốc trước
khi chuyển cho nhiều người. Với những ứng dụng này thì yêu cầu là đảm bảo độ an
toàn cao cho các thuỷ vân, tránh sự xoá dấu vết trong khi phân phối.
13
1.1.6.5. Gán nhãn (labeling)
Tiêu đề, chú giải và nhãn thời gian cũng như các minh hoạ khác có thể được
nhúng vào trong đối tượng chứa. Ví dụ ta có thể đính tên người lên ảnh hoặc đính tên
vùng địa phương lên bản đồ. Khi đó, nếu sao chép ảnh thì cũng se sao chép cả các dữ
liệu nhúng trong nó. Và chỉ có chủ sở hữu của tác phẩm mới có thể tách ra và xem
các chú giải này. Gán nhãn cũng được sử dụng để nhúng các từ khoá vào trong các
đối tượng chứa để các động cơ tìm kiếm có thể tìm nhanh đối tượng.
1.1.6.6. Điều khiển sao chép (copy control)
Đối với các hệ thống phân phối dữ liệu đa phương tiện, một yêu cầu luôn đặt
ra là cần có kỹ thuật chống sao chép trái phép dữ liệu. Có thể dùng thuỷ vân trong
những trường hợp này để điều khiển sao chép đối với các thông tin [73]. Các thiết bị
phát hiện ra thuỷ vân thường được gắn sẵn vào trong các hệ thống đọc ghi. Thuỷ vân
mang các giá trị chỉ trạng thái cho phép sao chép dữ liệu như “copy never” - không
được phép sao chép hay “copy once” - chỉ được copy một lần. Sau khi copy xong, bộ
đọc, ghi thuỷ vân se ghi thuỷ vân mới chỉ trạng thái mới lên DVD. Các ứng dụng loại
này cũng yêu cầu thuỷ vân phải được bảo đảm an toàn và sử dụng phương pháp phát
hiện thuỷ vân đã giấu không cần thông tin gốc.
1.2. Giấu tin trong âm thanh số
Ngay từ những ngày đầu phát triển, các thuật toán giấu tin hầu hết chỉ tập trung
nghiên cứu nhiều lĩnh vực ảnh. Khác với giấu tin trong ảnh là khai thác hệ thống thị
giác của con người, giấu tin trên âm thanh tập trung khai thác khả năng cảm nhận của
hệ thính giác của con người (Human Auditory System).
Hình 1.4. Hệ thông thinh giac của con ngươi [66]
14
Hình 1.4 mô tả cấu trúc hệ thống thính giác của con người. Các tín hiệu âm
thanh từ môi trường bên ngoài se được thu nhận bởi tai ngoài, sau đó các tín hiệu này
chuyển đến màng nhĩ và chuyển đến các tế bào thần kinh thông qua các cấu trúc bên
trong của tai.
Theo các nghiên cứu về sinh học, hệ thính giác người nhạy cảm hơn nhiều so
với hệ thống thị giác và các tấn công trên âm thanh số cũng đa dạng hơn nên giấu tin
trên âm thanh không phải là lĩnh vực dễ thực hiện [74]. Giấu tin trong âm thanh dựa
vào ngưỡng nghe của người và hiện tượng che khuất (masking) âm thanh để giấu tin.
1.2.1. Ngưỡng nghe
Phạm vi nghe của tai người trong khoảng từ 20Hz đến 20 kHz nhưng nghe rõ
nhất đối với âm thanh trong phạm vi từ 1kHz đến 4kHz. Ngưỡng nghe của con người
thay đổi theo độ tuổi và có sự khác nhau giữa nam và nữ. Hình 1.5 thể hiện dải tần
của âm thanh. Những âm thanh trong khoảng từ 0 - 20Hz gọi là hạ âm, những âm
thanh trên 20 KHz gọi là siêu âm. Con người không nghe được hạ âm và siêu âm.
Hình 1.5. Dải tần của âm thanh
1.2.2. Hiện tượng che khuất
Mặc dù tai người có thể nghe ở dải tần rộng nhưng những gì tai người có thể
nghe phụ thuộc vào môi trường nơi đang nghe. Nếu như ở trong môi trường nhiễu
mạnh (ví dụ nhiễu trắng), nhiều âm thanh nhỏ se bị che khuất (masked), vì thế ta
không thể nghe được chúng.
Hiện tượng che khuất tín hiệu âm thanh (auditory masking) xảy ra khi một âm
thanh này ảnh hưởng đến sự cảm nhận một âm thanh khác. Âm thanh bị che gọi là
maskee, âm thanh che là masker. Khoảng cường độ khác nhau giữa maskee và masker
gọi là mức độ che.
20 kHz 20Hz
Hạ âm Âm thanh Siêu âm
15
Hình 1.6 Ngưỡng che của tin hiệu âm thanh
Ví dụ ban đầu ta có thể nghe âm thanh ở mức 10 dB. Khi có sự xuất hiện đồng
thời một âm thanh khác thì ta không thể nghe được âm thanh ban đầu trừ khi ta điều
chỉnh âm thanh ban đầu lên 26 dB. Như vậy khoảng bị che (masked threshold) của
âm thanh ban đầu so với âm thanh che là 16 dB. Hình 1.6 minh hoạ cho ngưỡng che
của tín hiệu âm thanh.
Hình 1.7. Che khuất âm thanh trên miền tần sô [74]
Hiện tượng che khuất âm thanh xảy ra trên cả miền tần số và miền thời gian.
Hình 1.7 minh họa cho che khuất âm thanh trong miền tần số (simultaneous masking)
và hình 1.8 minh họa cho che khuất âm thanh trong miền thời gian (temporal
masking).
Hình 1.8. Che khuất âm thanh trên miền thơi gian [74]
16
1.2.3. Âm thanh và các đặc tính của âm thanh
Âm thanh là các dao động cơ học của các phân tử, nguyên tử hay các hạt làm
nên vật chất và lan truyền trong vật chất như các sóng. Âm thanh, giống như nhiều
sóng, được đặc trưng bởi tần số, bước sóng, chu kỳ, biên độ và vận tốc lan truyền. Ba
đặc trưng sinh lý của âm thanh là âm lượng, độ cao, âm sắc. Âm lượng đại diện cho
độ lớn (loudness) của tín hiệu âm thanh, tương quan với biên độ của tín hiệu, cũng
được xem là năng lượng hoặc cường độ của tín hiệu âm thanh. Độ cao đại diện cho
tỷ lệ rung của tín hiệu âm thanh, có thể biểu diễn bởi tần số cơ bản hoặc tương đương.
Âm sắc đại diện cho nội dung ngữ nghĩa của tín hiệu âm thanh, giúp ta phân biệt âm
do các nguồn khác nhau phát ra.
Đơn vị để đo âm thanh là decibel (dB). Decibel được dùng để so sánh độ mạnh
của 2 âm thanh. Giá trị của này thể hiện tỉ lệ (ratio) chứ không phải là một giá trị cụ
thể.
𝑑𝐵 = 20𝑙𝑜𝑔10(𝑃1
𝑃𝑅𝐿) (1.1)
Trong đó PRL là cường độ (strength) của tín hiệu cần so sánh và P1 là cường
độ của tín hiệu được so sánh.
Ví dụ: P1=3.1*PRL thì:
dB =20*log10(3.1PRL/PRL)
=20*log10(3.1) =20*0.49993 =9.827 ~ 10.
Các đặc tính của âm thanh:
- Âm thanh có thể dùng máy biến năng chuyển âm thanh từ dạng này sang
dạng năng lượng khác để lưu trữ.
- Cường độ bức xạ của âm thanh giảm dần tỉ lệ với bình phương khoảng
cách với nguồn.
Khi làm việc trong môi trường âm thanh, ngoài thông tin số thể hiện âm thanh
chúng ta còn phải chú ý đến phương tiện truyền dẫn tín hiệu âm thanh đó. Phương
tiện truyền dẫn một tín hiệu âm thanh là môi trường mà trong đó tín hiệu phải đi qua
để đến được đích. Có thể chia môi trường truyền dẫn ra thành 4 nhóm như sau:
17
- Môi trường số end – to – end: trong đó các tệp âm thanh được copy trực tiếp
từ máy này sang máy khác.
- Môi trường lấy mẫu lại theo tỉ lệ khác: trong đó tín hiệu được lấy mẫu lại
theo tỉ lệ lấy mẫu cao hoặc thấp hơn.
- Môi trường truyền dẫn analog và lấy mẫu lại : trong đó tín hiệu được chuyển
sang analog sau đó lấy mẫu lại.
- Môi trường "over the air": tín hiệu được truyền qua không khí và được lấy
mẫu lại bằng micro.
Tùy vào môi trường truyền tín hiệu âm thanh mà có các kỹ thuật thích hợp để
nhúng dữ liệu vào tệp âm thanh này.
Chất lượng tín hiệu có thể giảm sút khi truyền trên đường truyền. Ơ dạng tương
tự hay dạng số, chúng ta đều có những cách để làm giảm sự hao hụt tín hiệu trên
đường truyền. Hình 1.9 minh hoạ cho các kỹ thuật làm giảm sự hao hụt tín hiệu trong
trường hợp tín hiệu tương tự và tín hiệu số.
Hình 1.9. Kỹ thuật làm giảm hao hụt tin hiệu trên đương truyền [80]
1.2.4. Biểu diễn âm thanh số
Để lưu trữ và xử lý âm thanh bằng máy tính, các tín hiệu âm thanh cần phải
được chuyển từ dạng tương tự sang dạng số. Thông tin số đại diện của một tệp âm
thanh bao gồm các mẫu tín hiệu được lấy theo phương pháp lượng tử hóa và lấy mẫu
theo thời gian [74]. Âm thanh thường được lượng tử hóa với độ sâu số (bit depth) 8,
16 hoặc 24 bit. Đối với âm thanh chất lượng cao, mức lượng tử thường được sử dụng
là 16 bit. Tỷ lệ lấy mẫu theo thời gian quyết định biên vùng tần số. Tỉ lệ lấy mẫu
thông thường nằm trong khoảng 8 kHz đến 44.1 kHz
18
Hình 1.10. Chuyển âm thanh dang tương sang dang sô
Hình 1.11 thể hiện chi tiết quá trình lấy mẫu, lượng tử hoá khi chuyển tín hiệu
ở dạng tương tự sang dạng số. Lỗi lượng tử (quantization error) có thể giảm xuống
bằng cách tăng tỉ lệ lấy mẫu (sampling rate) và dùng nhiều bit hơn để biểu diễn giá
trị một mẫu (quantization level).
Hình 1.11. Lượng tử hoa và biểu diễn dang sô tin hiệu tương tự [80]
19
Một mẫu dữ liệu âm thanh có thể biểu diễn bằng 8 bit, 16 bit hay 24 bit và tệp
âm thanh có thể gồm 1 kênh (mono) hay 2 kênh (stereo). Số byte dùng để lưu 1 giây
âm thanh được xác định theo công thức (1.2):
Số byte ≈ (tần số lấy mẫu ∗ số kênh ∗ số bit biểu diễn 1 mẫu)/8 (1.2)
Ví dụ với âm thanh stereo, dùng 16 bit để lưu 1 mẫu, tần số lấy mẫu 44 kHz, mã hoá
PCM, thì số byte cần dùng để lưu 3 phút se là:
≈ 3min*60sec/min*44000samples/sec*16bits/sample*2(channel)/8bits/byte
≈ 31.68 Mb.
1.2.5. Các định dạng âm thanh phổ biến
Do các thuật toán giấu tin phụ thuộc vào định dạng của tệp âm thanh, nên để
giấu tin vào tệp âm thanh, ta cần hiểu rõ định dạng tệp âm thanh. Có thể phân các
định dạng thành âm thanh thành ba nhóm, đó là nhóm định dạng không nén, nhóm
định dạng nén không mất mát thông tin và nhóm định dạng nén mất mát thông tin.
Bảng 1.1 trình bày một số định dạng âm thanh thường gặp trên các hệ thống máy tính
[86].
Bảng 1.1. Môt sô đinh dang tệp âm thanh trên may tinh
Kiểu Phần mơ rộng Codec
AIFF (Mac) .aif, .aiff *PCM
AU (Sun/Next) .au *u-law
CD audio (CDDA) N/A PCM
MP3 .mp3 MPEG Audio Layer-III
Windows Media Audio .wma Proprietary (Microsoft)
QuickTime .qt Proprietary (Apple Computer)
RealAudio .ra, ram Proprietary (Real Networks)
WAV .wav *PCM
• WAV (.wav) : là kiểu định dạng đại diện cho âm thanh kỹ thuật số trong
Windows PCs.
• AIFF (aif) và AU (.au) : AIFF là kiểu định dạng âm thanh đại diện cho
Macintosh, AU là kiểu định dạng đại diện cho hệ thống Sun.
20
• RealAudio (.ra) : là hệ thống được sử dụng đầu tiên đại diện cho luồng âm
thanh và hình ảnh trên Internet.
• MIDI (.mid) : được ghi tắt của Music Instrument Digital Interface, là chuẩn
đại diện cho thông tin âm nhạc chuyển giao giữa phương tiện điện tử và máy tính.
• QuickTime (.qt) : được sử dụng để định dạng đa phương tiện từ máy tính
Apple, hỗ trợ cả luồng âm thanh và luồng hình ảnh.
1.2.6. Một số chương trình giấu tin trên âm thanh
Đã có nhiều phần mềm giấu tin trong âm thanh được phát triển và ứng dụng
trong thực tế. Bảng 1.2 thể hiện một số chương trình giấu hiện tại trong khảo sát của
Pedram Hayati và các cộng sự [81]. Ngoài giấu tin trên âm thanh, một số phần mềm
có thể giấu trên nhiều loại dữ liệu và chạy trên nhiều hệ điều hành khác nhau. Ví dụ
như OpenPuff có thể giấu trên ảnh, video, âm thanh và tệp pdf.
Bảng 1.2. Bảng môt sô phần mềm giấu tin trong âm thanh
Tên phần mềm giấu tin Định dạng hỗ trợ Dạng bản quyền
Info Stego mp3 Shareware
ScramDisk wav Shareware
MP3Stego mp3 Mã nguồn mở
StegoWav wav Mã nguồn mở
Hide4PGP mp3, voc Mã nguồn mở
Steghide wav, au Mã nguồn mở
S-Tool wav Mã nguồn mở
Invisible Secrets wav Thương mại
Steganos wav, voc Thương mại
Tổng kết chương 1
Trong chương 1 trình bày các khái niệm liên quan đến giấu tin, phân loại giấu
tin và các ứng dụng của giấu tin. Trong chương này cũng trình bày về hiện tượng che
khuất của tín hiệu, cách lấy mẫu và biểu diễn âm thanh trên máy tính, các định dạng
tệp âm thanh phổ biến và một số phần mềm giấu tin trên âm thanh đã triển khai trong
thực tế.
21
22
Chương 2. PHƯƠNG PHÁP GIẤU TIN TRONG
ÂM THANH
Chương này se trình bày các phương pháp dùng để giấu tin trong âm thanh
cùng các ưu nhược điểm của từng phương pháp. Trong chương cũng trình bày các kỹ
thuật xáo trộn dữ liệu nhằm thay đổi thứ tự các bit giấu, các kỹ thuật biến đổi dữ liệu
từ miền thời gian sang miền tần số cùng một số độ đo (chỉ số) thường được dùng để
đánh giá chất lượng các kỹ thuật giấu.
2.1. Các kỹ thuật bổ trợ cho giấu tin
Để giấu tin hiệu quả, thông thường ta cần dùng các kỹ thuật bổ trợ. Các kỹ
thuật này bao gồm chuyển dữ liệu âm thanh từ miền thời gian sang miền tần số, kỹ
thuật sinh các chuỗi số ngẫu nhiên và các kỹ thuật thay đổi thứ tự giấu các bit trong
chuỗi bit mật.
2.1.1. Các phép biến đổi từ miền thời gian sang miền tần số
Ngoài phương pháp xử lý trực tiếp giá trị các mẫu âm thanh trên miền thời
gian, chúng ta có thể dùng phương pháp khảo sát gián tiếp thông qua các kỹ thuật
biến đổi. Các biến đổi này làm nhiệm vụ chuyển miền biến số độc lập sang các miền
khác với các biến số mới. Phương pháp khảo sát gián tiếp này se làm đơn giản rất
nhiều các công việc mà chúng ta gặp phải khi dùng phương pháp khảo sát trực tiếp
trong miền biến số độc lập. Có nhiều cách biến đổi, trong đó cách biến đổi hay được
sử dụng là biến đổi Fourier, biến đổi wavelet…
2.1.1.1. Phép biến đổi Fourier rời rạc
Phép biến đổi Fourier rời rạc (DFT) còn được gọi là biến đổi Fourier hữu hạn.
Đầu vào của biến đổi này là một chuỗi hữu hạn các số thực hoặc số phức. Phép biến
đổi DFT phân tích một dãy các số thành các thành phần ở các tần số khác nhau, là
một công cụ lý tưởng để xử lý thông tin trên các máy tính. Một biến đổi Fourier nhanh
(FFT) là một thuật toán hiệu quả để tính DFT với độ phức tạp là O(nlogn) thay vì tính
trực tiếp là O(n2) [15].
23
2.1.1.2. Phép biến đổi wavelet (DWT)
Phép biến đổi Fourier là một công cụ quan trọng trong xử lý tín hiệu số. Tuy
nhiên, phép biến đổi này chỉ cung cấp thông tin có tính toàn cục và chỉ thích hợp cho
những tín hiệu tuần hoàn, không chứa các đột biến hoặc các thay đổi không dự báo
được. Phép biến đổi wavelet khắc phục hạn chế này của biến đổi Fourier. Biến đổi
wavelet được tính dựa vào phân tích đa phân giải [6]. Ý tưởng của phân tích đa phân
giải là sử dụng các kỹ thuật lọc số trong quá trình phân tích. Mỗi một tín hiệu được
phân tích thành hai thành phần: thành phần xấp xỉ A (Approximation) tương ứng với
thành phần tần số thấp và thành phần chi tiết D (Detail) tương ứng với thành phần tần
số cao, thông qua hai bộ lọc thông thấp và thông cao, trong đó, bộ lọc thông cao sử
dụng hàm wavelet và bộ lọc thông thấp sử dụng hàm tỉ lệ.
Hình 2.1. Phân giải tin hiệu thành 2 thành phần xấp xỉ và chi tiết
Hình 2.1 minh họa cho việc phân tích tín hiệu âm thanh thành hai thành
phần xấp xỉ và chi tiết. Chuỗi tín hiệu gốc là dữ liệu của một tệp âm thanh gồm
1422720 mẫu se được phân tích thành hai dãy A và D có độ dài gồm 711363 mẫu.
Trong hai thành phần A và D, thành phần D không quan trọng. Những thay
đổi trên thành phần này ít ảnh hưởng đến tín hiệu khi ta khôi phục lại. Ví dụ nếu
thay đổi thành phần D=0 (loại bỏ thành phần D), thực hiện biến đổi ngược lại, ta
se có dãy tín hiệu như hình 2.2.
24
Hình 2.2. Tin hiệu gôc và tin hiệu đã loai bỏ thành phần D
2.1.2. Xáo trộn dữ liệu mật
Giả sử có chuỗi M gồm n phần tử, là thông điệp mật cần giấu vào trong tệp
âm thanh. Thay vì giấu tuần tự từng phần tử từ M1 đến Mn, ta thực hiện xáo trộn chuỗi
M rồi mới đem giấu vào tệp âm thanh. Mục đích của việc này là để gây khó khăn cho
người thám tin khi thực hiện tấn công rút trích tin. Nếu người thám tin biết thuật toán
giấu thì rất có thể dò ra được chuỗi tin giấu. Xáo trộn dữ liệu đòi hỏi người thám tin
phải sắp xếp lại chuỗi tin nhận được theo trật tự đúng mới biết được tin, nếu không,
chuỗi tin nhận được cũng không có ý nghĩa. Dưới đây là hai thuật toán dùng để xáo
trộn dữ liệu được sử dụng trong các chương sau của luận án.
2.1.2.1. Xáo trộn dữ liệu theo chuỗi hoán vị
Nếu chuỗi tin mật cần giấu có độ dài n (đánh số từ 1 đến n) thì se có n! hoán
vị của nó. Ta có thể hoán vị chuỗi mật này trước khi giấu. Có nhiều kỹ thuật tạo hoán
vị của tập {1,2,..., n} [62]. Một trong các cách hiệu quả là dùng phương pháp sinh
theo kiểu thứ tự từ điển.
Ví dụ ta có chuỗi cần giấu là “axnd”. Ta gán cho các ký tự chuỗi giá trị theo
đúng thứ tự xuất hiện của chúng là {1, 2, 3, 4}.
Chuỗi này se có 24 hoán vị là {1, 2, 3, 4}, {1, 2, 4, 3},{1, 3, 2, 4},{1, 3, 4,
2},{1, 4, 2, 3},{1, 4, 3, 2},{2, 1, 3, 4},{2, 1, 4, 3},{2, 3, 1, 4},{2, 3, 4, 1},{2, 4, 1,
3},{ 2, 4, 3, 1},{3, 1, 2, 4},{3, 1, 4, 2},{3, 2, 1, 4},{3, 2, 4, 1},{3, 4, 1, 2},{3, 4, 2,
1},{4, 1, 2, 3},{4, 1, 3, 2, 4},{4, 2, 1, 3},{4, 2, 3, 1},{4, 3, 1, 2},{4, 3, 2, 1}.
25
Khi chọn k là 1 giá trị nào đó trong n! giá trị thì ta se chọn hoán vị thứ k của
chuỗi ban đầu và đem chuỗi đó đi giấu thay vì chuỗi nguyên gốc (k=1). Trong trường
hợp giá trị k lớn hơn n! thì k se được gán bằng (k mod n!) + 1.
Ví dụ k= 20 thì chuỗi giấu là: “danx” tương ứng với hoán vị {4, 1, 3, 2}.
Khi n lớn thì việc sinh chuỗi hoán vị thứ k (lớn) có thể tốn thời gian. Có nhiều
cách để sinh ra hoán các hoán vị này. Một thuật toán hiệu quả để sinh ra hoán vị thứ
k của tập n phần tử được trình bày trong [30].
2.1.2.2. Xáo trộn dữ liệu bằng phép biến đổi Arnold
Biến đổi Arnold là kỹ thuật biến đổi dùng để xáo trộn các điểm ảnh [14]. Gọi
I(x, y) là điểm ảnh ban đầu ở toạ độ (x, y). Sau khi thực hiện phép chuyển đổi, điểm
ảnh se được chuyển đến toạ độ mới là (x’, y’). Công thức xác định (x’, y’) như sau:
[𝑥′𝑦′
] = [1 11 2
] [𝑥𝑦] (𝑚𝑜𝑑 𝑁) (2.1)
trong đó x, y ∈ {0,1, ..., N-1} và x’, y’ ∈ {0,1, ..., N-1}.
Bảng 2.1. Chu kỳ lặp lai của phép biến đổi tương ứng với kich thước N
N 2 3 6 10 16 20 32 64 80 100
Chu kỳ 3 4 12 30 12 30 24 36 60 150
Nếu thực hiện một số lần biến đổi, ảnh biến đổi se trở lại ảnh ban đầu. Chu kỳ
của phép biến đổi tương ứng với kích thước khối ảnh N được thể hiện trong bảng 2.1.
Hình 2.3. Ảnh gôc và sau khi thực hiện chuyển đổi.
Hình 2.3 là minh hoạ cho ảnh gốc là logo Đại học Công nghệ, Đại học Quốc
gia Hà Nội, kích thước 80*80 và hình ảnh xáo trộn ở các bước 1, 2, 6, 12 (dòng trên,
26
từ trái qua phải) và 20, 30, 40, 58, 59 (dòng dưới, từ trái qua phải) sử dụng phép biến
đổi trong [84].
Ảnh có kích thước n=80, chu kỳ là 60. Nếu lấy ảnh ở lần chuyển 59 và thực
hiện thêm 1 lần nữa thì se được ảnh ban đầu.
2.1.3. Sinh chuỗi giả ngẫu nhiên
Các phương pháp giấu tin trong audio thường dùng kết hợp với các chuỗi
ngẫu nhiên để thực hiện giấu tin. Chuỗi ngẫu nhiên này có thể dùng để xác định ví trí
mẫu được chọn để giấu hoặc vị trí bit giấu. Các số ngẫu nhiên có thể được sinh trực
tiếp bằng các bộ sinh trong máy tính (C++, PHP và Matlab sử dụng bộ sinh Mersenne
Twister) hoặc do người lập trình tự cài đặt. Trong [25] trình bày một số thuật toán về
cách sinh số ngẫu nhiên.
2.1.3.1. Bộ sinh đồng dư (congruential generator)
Công thức cho bộ sinh số đồng dư có dạng:
𝑥𝑘 = (𝑎 ∗ 𝑥𝑘−1 + 𝑏) 𝑚𝑜𝑑 𝑀 (2.2)
Trong đó a và b là hai số nguyên cho trước, trị x0 ban đầu được gọi là “hạt
giống” (seed) và số nguyên M là số xấp xỉ (hoặc bằng) với số nguyên lớn nhất trên
máy tính. Bộ sinh đồng dư cải tiến sử dụng công thức như sau :
𝑥𝑘 = (𝑎 ∗ 𝑥𝑘−1 + 2 ∗ 𝑎) 𝑚𝑜𝑑 𝑛 (2.3)
trong đó a là một số nguyên lớn và thường chọn là một số nguyên tố, số mồi là x0.
2.1.3.2. Bộ sinh Fibonacci
Bộ sinh này se tạo ra giá trị mới như là một hiệu, một tổng hoặc một tích của
các giá trị trước. Một ví dụ tiêu biểu là bộ sinh hiệu:
𝑥𝑘 = (𝑥𝑘−17 − 𝑥𝑘−5) (2.4)
Chúng ta nói rằng, bộ sinh này có độ trễ 17 và 5. Bộ sinh hiệu này có thể tạo ra
một kết quả âm. Một ưu điểm của bộ sinh Fibonacci so với bộ sinh đồng dư là bộ sinh
Fibonacci có thời gian (lặp lại) dài.
27
2.2. Đánh giá các phương pháp giấu tin trong âm thanh
Để đánh giá hiệu năng của các kỹ thuật giấu tin trong âm thanh, chúng ta
thường dựa vào tỉ lệ có thể cảm nhận và tỉ lệ có thể phát hiện.
2.2.1. Đánh giá bằng các độ đo
2.2.1.1. Độ đo SNR
Để đánh giá khả năng cảm nhận ta dựa vào tham số là segSNR (segmental
signal – to – noise ratio). Giá trị của segSNR chỉ số lượng thay đổi trên dữ liệu chứa
do chèn âm dữ liệu mật vào và được tính theo thang độ decibel. Trong dữ liệu âm
thanh, giá trị SNR dưới 20 dB thường được xem là nhiễu trong khi giá trị SNR từ 20
dB hàm ý rằng chất lượng âm thanh được đảm bảo.
Độ đo SNR được tính như sau:
𝑆𝑅𝑁 = 10 log10∑ 𝑥(𝑖)2𝑁
𝑖=0
∑ [𝑥(𝑖)−𝑦(𝑖)]2𝑁𝑖=0
(2.5)
Trong công thức trên, x (n) thể hiện âm thanh gốc và y(n) thể hiện âm thanh
chứa tin giấu.
2.2.1.2. Độ đo NCC (Normalized Cross Correlation)
NCC dùng để đo độ tương quan giữa hai chuỗi số, có thể dùng để đo độ tương
quan giữa âm thanh gốc và âm thanh có chứa tin, hoặc chuỗi bit được giấu và chuỗi
bit nhận được.
Công thức để tính NCC như sau:
𝑁𝐶𝐶 =1
n∗ ∑
[𝑥(𝑖)∗ 𝑦(𝑖)]
[𝑥(𝑖)]2𝑛i=1 (2.6)
trong đó 𝑥(𝑖) là chuỗi số gốc và y(𝑖) là chuỗi nhận được có các thay đổi trên
chuỗi dữ liệu gốc.
Giá trị của NCC nằm trong khoảng từ 0 đến 1. Nếu giá trị này càng gần 1
chứng tỏ hai chuỗi càng giống nhau.
2.2.2. Đánh giá bằng các phần mềm phát hiện tin
Có thể dùng các phần mềm phát hiện tin để đánh giá các kỹ thuật giấu tin. Rất
nhiều phần mềm phát hiện tin giấu trong ảnh đã được phát triển nhưng số phần mềm
28
phát hiện tin giấu trong audio thì chưa nhiều. Ba phần mềm tiêu biểu phát hiện tin
trong âm thanh là HITIT, Stego-Suite và Stegsecret. HITIT được phát triển bởi
Yavanoglu U và các cộng sự, thực hiện phát hiện tin giấu trong tệp wav. Stego-Suite
là sản phẩm thương mại của công ty Allien và Stegsecret là sản phẩm mã nguồn mở
được phát triển bởi Alfonso Muñoz. Nếu như kỹ thuật giấu của chúng ta không vượt
qua được một phần mềm phát hiện tin giấu thì không thể nói kỹ thuật giấu là an toàn.
2.2.3. Đánh giá bằng bảng đánh giá ODG (Object Difference Grade)
Bảng đánh giá ODG được đề xuất bởi hiệp hội viễn thông quốc tế ITU
(International Telecommunication Union) [47]. Đây là kỹ thuật chủ quan, dựa vào
cảm nhận của con người. Bảng ODG gồm có 5 tiêu chí tương ứng với 5 mức điểm
khác nhau. Chi tiết các tiêu chí trong bảng 2.2.
Bảng 2.2. Cac tiêu chi đanh gia theo thang ODG
Mô tả sự thay đổi trên dữ liệu gốc ODG
Không cảm nhận được 0.0
Cảm nhận được, nhưng không gây khó chịu −1.0
Hơi gây khó chịu −2.0
Gây khó chịu −3.0
Rất khó chịu −4.0
2.3. Phương pháp giấu tin trong âm thanh
Các phương pháp giấu tin trong âm thanh có thể thực hiện trên miền thời gian
hoặc miền tần số, hoặc kết hợp trên cả hai miền. Một số phương pháp có thể cần sử
dụng tín hiệu gốc trong quá trình rút trích thông tin. Mục này se trình bày một số
phương pháp giấu tin cơ bản và các nghiên cứu liên quan đến phương pháp giấu đó.
2.3.1. Phương pháp điều chỉnh bit ít quan trọng nhất (LSB coding)
Đây là một trong những kỹ thuật được nghiên cứu và ứng dụng sớm nhất trong
lĩnh vực giấu tin trên âm thanh cũng như trên các định dạng dữ liệu khác. Ý tưởng
chính của kỹ thuật này là thay thế các bit ít quan trọng của mẫu dữ liệu gốc bằng các
bit của tin giấu. Các bit được gọi là bit ít quan trọng khi ta thay đổi giá trị của bit đó
29
từ 0 sang 1 hay từ 1 sang 0 thì sự thay đổi giá trị của mẫu dữ liệu không lớn và nó
không gây ra sự khác biệt nào đối với hệ thống tri giác của con người. Ví dụ ta có
mẫu 8 bit có giá trị bằng 94 và cần giấu bit 1 vào trong mẫu này. Khi đó ta se điều
chỉnh giá trị bit cuối cùng mẫu từ 0 thành 1 và giá trị mới của mẫu là 95. Hình 2.4
minh hoạ cách điều chỉnh bit trên mẫu có giá trị 94 để giấu bit 1. Trong trường hợp
cần giấu bit 0 vào mẫu này thì ta không cần điều chỉnh giá trị của mẫu.
Hình 2.4. Điều chỉnh bit thấp nhất của mẫu để giấu bit 1
Khi giấu 1 bit mật vào mẫu dữ liệu thì độ lệch giá trị giữa mẫu dữ liệu gốc và
dữ liệu mang tin tối đa là 1.
Để tăng độ bền vững của kỹ thuật giấu này, ta có thể giấu nhiều lần chuỗi thông
điệp mật hoặc điều chỉnh vị trí các bit cao hơn trong mỗi mẫu để giấu tin. Các kỹ
thuật giấu dùng phương pháp điều chỉnh LSB thường chọn các bit từ vị trí 1 đến 3,
tính từ bên phải sang trái. Ưu điểm của phương pháp LSB là tỉ lệ dữ liệu lớn, bình
quân 8 mẫu dữ liệu có thể giấu một byte dữ liệu mật, vì vậy tỉ lệ dữ liệu có thể bằng
số mẫu dữ liệu trong tệp. Do không phải thực hiện nhiều phép toán phức tạp nên
phương pháp này có thời gian thực hiện rất nhanh. Đối với phương pháp điều chỉnh
LSB, ta có thể tăng thêm tỉ lệ giấu bằng cách dùng hai bit LSB, nghĩa là trong mỗi
mẫu ta se giấu 2 bit mật. Tuy nhiên cách này cũng làm tăng nhiễu trên đối tượng chứa
dẫn đến đối phương dễ phát hiện và thực hiện các tấn công. Trong [5, 14, 15, 16, 22]
là một số cải tiến cho kỹ thuật giấu tin trong âm thanh sử dụng phương pháp điều
chỉnh LSB, với mục đích là giảm sự thay đổi của dữ liệu gốc.
2.3.2. Phương pháp chẵn lẻ (parity coding)
Phương pháp chẵn lẻ cũng tương tự như phương pháp mã hoá LSB, nhưng thay
vì dùng một mẫu dữ liệu se dùng một nhóm các mẫu. Dãy tín hiệu chứa se được chia
0 1 0 1 1 1 1 0
Giá trị mẫu sau khi điều chỉnh để giấu bit 1:
0 1 0 1 1 1 1 1
Giá trị mẫu dữ liệu gốc
30
thành các đoạn (khối) có cùng kích thước. Tính chẵn lẻ của đoạn được xác định bằng
tổng giá trị các mẫu trong đoạn đó chẵn hay lẻ. Nếu như đoạn có tính chẵn nhưng cần
giấu bit 1 thì se điều chỉnh (lật) một bit của một mẫu nào đó trong đoạn để đoạn có
tính lẻ. Nếu như cần giấu bit 0 vào đoạn có tính chẵn thì không cần phải làm gì. Tương
tự như vậy cho trường hợp giấu bit 1.
Hình 2.5. Điều chỉnh mẫu để giấu bit 1 trong khôi theo phương phap chẵn lẻ
Hình 2.5 minh họa cho việc giấu bit 1 vào khối. Do tổng giá trị của khối là số
chẵn nên ta se điều chỉnh giá trị 1 mẫu để đảm bảo tổng của khối có giá trị lẻ.
Trong quá trình giải tin ta se dựa vào tính chẵn lẻ của đoạn để rút trích các bit.
Nếu như đoạn có tính lẻ thì rút trích bit 1, ngược lại rút trích bit 0.
Tính chẵn lẻ của đoạn cũng có thể được xác định theo một tiêu chí khác nào đó.
Ví dụ có thể xác định tính chẵn lẻ theo tổng số bit 1 của các mẫu trong đoạn.
So với phương pháp mã hoá LSB, phương pháp mã hoá chẵn lẻ có tỉ lệ dữ liệu
thấp hơn, do phải dùng nhiều mẫu hơn để giấu 1 bit. Có thể nâng độ an toàn của
phương pháp này bằng cách chọn các đoạn có kích thước không cố định và điều chỉnh
hàm xác định tính chẵn lẻ của đoạn.
Kỹ thuật chẵn lẻ được dùng nhiều trong giấu tin trong ảnh. Trong [61] trình bày
một kỹ thuật giấu dựa vào mã hoá chẵn lẻ giấu tin trong ảnh.
2.3.3. Phương pháp mã hoá pha (phase coding)
Mã hóa pha là một phương pháp khác dùng để giấu tin trong âm thanh. Phương
pháp mã hoá pha dựa vào đặc tính tai người không phân biệt được sự khác nhau về
pha của hai tín hiệu âm thanh. Việc giấu tin được thực hiện thông qua việc thay thế
pha của một đoạn (segment) âm thanh ban đầu bằng một pha tham chiếu (referency
96 39 26 9 68
20 27 40 51 19
37 42 40 78 617
60 14 29 8 139
26 19 86 0 63
96 39 26 9 68
20 27 40 50 19
37 42 40 78 617
60 14 29 8 139
26 19 86 0 63
31
phase) thể hiện dữ liệu. Pha của các đoạn tiếp theo se được điều chỉnh sao cho duy trì
mối quan hệ giữa các đoạn [7].
Hình 2.6. Sự dich chuyển pha của tin hiệu
Giả sử ta có hai chuỗi x(t) và y(t) như sau:
𝑥(𝑡) = 𝐴. 𝑐𝑜𝑠 (2𝜋𝑓𝑡 + 𝜑)
𝑦(𝑡) = 𝐴. 𝑠𝑖𝑛(2𝜋𝑓𝑡 + 𝜑) = 𝐴. 𝑐𝑜𝑠 (2𝜋𝑓𝑡 + 𝜑 − 𝜋
2)
Trong đó A là biên độ, f là tần số và 𝜑 là pha. Thuật ngữ pha được hiểu theo
nghĩa đó là tham chiếu đến một tín hiệu nào khác. Ví dụ nếu tham chiếu đến tín hiệu
𝐴. cos (2𝜋𝑓𝑡) thì tín hiệu x(t) có pha là 𝜑 và tín hiệu y(t) có pha là 𝜑 − 𝜋
2.
Thuật toán giấu tin sử dụng phương pháp mã hoá pha như sau :
Bước 1) Chuỗi âm thanh gốc được chia thành dãy N đoạn (segment) ngắn và
biến đổi Fourier cho từng đoạn.
Bước 2) Tính sự chênh lệch về pha giữa các đoạn kề nhau.
Bước 3) Điều chỉnh pha để giấu tin:
- Đối với pha đầu tiên, tạo pha P0 tùy ý.
- Đối với tất cả các đoạn khác, tạo ra các pha mới để giấu tin theo công thức
(2.7).
phasenew= {π
2⁄ nếu giấu bit 1
- π2⁄ nếu muốn giấu bit 0
(2.7)
- Kết hợp pha mới này với biên độ gốc để tạo ra đoạn mới, Sn.
Bước 4) Thực hiện biến đổi Fourier ngược các đoạn và kết nối các đoạn lại để
tạo ra tín hiệu âm thanh mới.
32
Để giải tin được giấu theo phương pháp này cần phải biết chiều dài của các
đoạn, thực hiện theo chiều ngược lại để lấy lần lượt các bit giấu.
Ví dụ có tín hiệu phức X gồm 256 (t=256) mẫu, được sinh theo công thức:
X=complex (cos (2*pi*2*t), sin (2*pi*2*t))
Y là kết quả khi dịch pha X một khoảng 𝜋 2⁄ .
Minh hoạ cho tín hiệu X, Y và pha của chúng trong hình 2.7.
Hình 2.7. Tin hiệu gôc và tin hiệu sau khi dich chuyển pha 𝜋/2
Mã hoá pha có ưu điểm là không gây nhiễu cho tín hiệu gốc. Lý do là phương
pháp mã hoá pha chỉ thay đổi pha chứ không thay đổi biên độ và tần số của tín hiệu
gốc. Hạn chế của phương pháp mã hoá pha là có tỉ lệ dữ liệu thấp và thời gian xử lý
để giấu tin lâu.
Tỉ lệ dữ liệu giấu của phương pháp này thấp vì dữ liệu chỉ được giấu trong
đoạn đầu nên tối đa chỉ bằng kích thước đoạn đầu (cũng bằng kích thước mỗi đoạn).
Ta không thể tăng kích thước của mỗi đoạn lên quá lớn vì nếu như vậy se gây
ra hiện tượng không liên tục về pha trong tín hiệu (phase discontinuous) và người
thám tin dựa vào đặc trưng này phát hiện tệp có chứa tin giấu [71]. Thông thường ta
dùng các kỹ thuật làm phẳng pha để kiểm tra sau khi giấu tin xong. Hình 2.8 minh
họa sự không liên tục về pha trong tín hiệu.
33
Hình 2.8. Hiện tượng không liên tục về pha
Trong [10, 55] trình bày hai thuật toán giấu tin trong audio sử dụng phương
pháp mã hoá pha. Kỹ thuật đề xuất có thể bền vững trước các tấn công lấy lại mẫu,
nén, thêm nhiễu. Do tỉ lệ dữ liệu thấp nên phương pháp mã hoá pha chủ yếu dùng cho
thuỷ vân. Nghiên cứu trong [42] trình bày một kỹ thuật giấu nhiều thuỷ vân trên dữ
liệu âm thanh stereo dùng phương pháp mã hoá pha.
2.3.4. Phương pháp mã hoá tiếng vọng (echo coding)
Phương pháp mã hoá tiếng vọng nhúng tin vào âm thanh bằng cách điều chỉnh
độ trễ thêm tiếng vọng vào tín hiệu gốc. Phương pháp này dựa vào đặc trưng của hệ
thống thính giác con người là không phân biệt được hai âm thanh nếu chúng xảy ra
gần như đồng thời, có độ lệch trong khoảng từ 1 đến 40 mili giây [70]. Gọi S(n) là tín
hiệu gốc và X(n) là tín hiệu được thêm tiếng vọng. Ta có công thức giấu như sau:
𝑋(𝑛) = 𝑆(𝑛) + 𝛼. 𝑆(𝑛 − 𝑑) (2.8)
Hình 2.9. Cac thành phần trong tiếng vọng của tin hiệu [32]
Dữ liệu nhúng được giấu bằng cách thay đổi 3 tham số của tiếng vọng là biên
độ ban đầu, tỉ lệ phân rã và độ trễ. Các tham số này thể hiện như trong hình 2.9.
Nếu độ lệch thời gian giữa tín hiệu gốc và tiếng vọng thấp thì hai tín hiệu có thể
trộn lẫn mà hệ thống thính giác của con người rất khó nhận biết được. Giá trị độ lệch
34
này không thể xác định chính xác vì tuỳ thuộc vào chất lượng âm thanh và kiểu âm
thanh. Giá trị được chọn trong các phương pháp giấu tin sử dụng kỹ thuật điều chỉnh
tiếng vọng là dưới 20 mili giây.
Bằng cách dùng thời gian trễ khác nhau giữa tín hiệu gốc và tiếng vọng để thể
hiện tương ứng giá trị nhị phân 1 hoặc 0, theo cách đó dữ liệu được giấu vào tệp âm
thanh. Hai độ trễ có thể chọn cố định hoặc tuỳ biến tuỳ thuộc vào khoá.
Khi đó công thức (2.8) se được điều chỉnh để giấu bit 1 và bit 0 trên một đoạn
âm thanh se là:
𝑋(𝑛) = 𝑆(𝑛) + 𝛼. 𝑆(𝑛 − 𝑑1)
𝑋(𝑛) = 𝑆(𝑛) + 𝛼. 𝑆(𝑛 − 𝑑0) (2.9)
Trong một số bài toán, ta chỉ cần thêm một tiếng vọng vào tín hiệu gốc như
công thức (2.9) để giấu tin. Tuy nhiên, trong các phương pháp điều chỉnh tiếng vọng
cải tiến, ta có thể thêm nhiều tiếng vọng, có thể là vọng trước và vọng sau so với tín
hiệu gốc để giấu tin. Ví dụ trong [37] đề xuất phương pháp thêm tiếng vọng cả trước
và sau so với tín hiệu gốc như công thức (2.10).
𝑋(𝑛) = 𝑆(𝑛) + 𝛼. 𝑆(𝑛 + 𝑑) + 𝛼. 𝑆(𝑛 − 𝑑) (2.10)
Bằng cách phân tích cepstrum của 𝑋(𝑛) ta se biết chính xác vị trí thêm tiếng
vọng [7]. Để rút trích tin giấu, ta se phân tích cepstrum của từng đoạn, dò tìm ra độ
lệch 𝑑0 , 𝑑1 từ đó se rút trích bit 0 hoặc bit 1. Chi tiết về cepstrum của tín hiệu được
trình bày ở mục 3.5.
Việc phân tích cepstrum để dò ra các giá trị 𝑑0, 𝑑1 trong quá trình giải tin tốn
nhiều thời gian, và đây cũng chính là khuyết điểm của phương pháp mã hoá tiếng
vọng. Ngoài ra, phương pháp giấu tin này chỉ cần biết kích thước mỗi đoạn giấu mà
không cần dùng tín hiệu gốc trong quá trình giải tin nên người thám tin cũng có thể
tự phân tích cepstrum để lấy tin giấu.
Trong [38, 53] trình bày hai thuật toán giấu tin trong âm thanh sử dụng phương
pháp mã hoá tiếng vọng. Trong [38] echo được thêm vào tín hiệu âm thanh dựa vào
chuỗi ngẫu nhiên. Trong [53] chỉ thêm tiếng vọng vào đoạn âm thanh để giấu tin nếu
35
năng lượng của đoạn đó lớn hơn một ngưỡng cho trước. Thuật toán cũng đề xuất chỉ
dùng 1 độ trễ để giấu 2 bit khác nhau, nhưng trên 2 kênh khác nhau.
2.3.5. Phương pháp trải phổ
Mô hình tổng quát của nhóm phương pháp này được dựa trên sự đồng bộ giữa
tín hiệu âm thanh và dãy chuỗi giả ngẫu nhiên. Một chuỗi ngẫu nhiên kết hợp với
chuỗi tin mật cần giấu se được trải trên chuỗi âm thanh gốc, có thể trên miền thời
gian hoặc miền tần số.
Có nhiều phương pháp khác nhau dùng để trải dữ liệu nhúng vào phổ tần số
[83]. Kỹ thuật DSSS (Direct Sequency Spread Spectrum) trải tín hiệu bằng cách nhân
tín hiệu với một dãy giả ngẫu nhiên nào đó được gọi là chip. Tuy nhiên phương pháp
này cũng giống như phương pháp chèn vào các bit ít quan trọng là có thể thêm vào
các nhiễu ngẫu nhiên mà người nghe có thể phát hiện ra [56]. Đối với phương pháp
FHSS (Frenquency Hopped Spread Spectrum), tín hiệu âm thanh gốc được chia thành
các mảnh nhỏ hơn và mỗi mảnh mang một tần số duy nhất. Lợi điểm cơ bản của kỹ
thuật trải phổ là có thể chống lại các thay đổi. Bởi vì dữ liệu nhúng được trải đều trên
dữ liệu chứa nên rất khó có thể thay đổi thông tin nhúng mà không làm thay đổi dữ
liệu chứa. Đây là một đặc điểm đáng chú ý để thực hiện thủy vân trong âm thanh.
2.3.5.1. Thuật toán giấu tin theo phương pháp trải phổ
Đầu vào: - Tín hiệu gốc s(n);
- Chuỗi bit cần giấu b(n);
- Khoá k dùng để sinh chuỗi ngẫu nhiên.
Đầu ra: - Tín hiệu x(n) chứa tin mật.
Bước 1) Chuyển chuỗi bit nhị phân cần giấu 𝑣(𝑛) sang dạng lưỡng cực 𝑏(𝑛)
tương ứng, trong đó 𝑏(𝑖) = 1 𝑛ế𝑢 𝑣(𝑖) = 1 𝑣à 𝑏(𝑖) = −1 𝑛ế𝑢 𝑏(𝑖) = 0.
Bước 2) Sinh chuỗi ngẫu nhiên 𝑟(𝑛) dựa vào khoá.
Bước 3) Xây dựng chuỗi tin giấu 𝑤(𝑛) = 𝑏. 𝑟(𝑛).
Bước 4) Trải chuỗi tin giấu vào chuỗi tín hiệu gốc dùng công thức (2.11)
𝑥(𝑛) = 𝑠(𝑛) + 𝛼. 𝑤(𝑛) (2.11)
36
Trong công thức (2.11) trên, 𝛼 là giá trị dùng để điều chỉnh tính không cảm
nhận được của dữ liệu trước và sau khi giấu và/hoặc tính bền vững của tin giấu.
2.3.5.2. Thuật toán giải tin theo phương pháp trải phổ
Quá trình giải tin dựa vào sự tương quan tuyến tính (linear correlation) giữa
hai chuỗi x(n) và r(n), trong đó r(n) là chuỗi ngẫu nhiên được sinh ra từ khoá mật.
Trong quá trình giải tin cũng cần sử dụng các phương pháp xử lý tín hiệu số như lọc
thông cao hay các phương phương pháp lọc khác.
Hình 2.10. Xử lý (lọc) mỗi khôi để giải tin trong kỹ thuật trải phổ
Đầu vào: -Tín hiệu chứa tin mật x(n);
- Khoá k dùng để sinh chuỗi ngẫu nhiên;
- Ngưỡng 𝜌 để phân biệt bit 0 hoặc bit 1.
Đầu ra : - Chuỗi bit b(n), là chuỗi thông tin mật.
Bước 1) Sinh chuỗi ngẫu nhiên 𝑟(𝑛) dựa vào khoá.
Bước 2) Lấy từng bit trong mỗi đoạn
- Tính giá trị c trong mỗi đoạn theo công thức (2.12):
𝑐 =1
𝑁∑ 𝑥(𝑖)𝑁
𝑖=1 ∗ 𝑟(𝑖) (2.12)
với N là độ dài mỗi đoạn.
- Nếu c> 𝜌 thì trả về bit 1 ngược lại trả về bit 0.
Trong thuật toán giải tin, công thức (2.12) tương ứng với:
𝑐 =1
𝑁∑ 𝑥(𝑖)𝑁
𝑖=1 ∗ 𝑟(𝑖) = 1
𝑁∑ [𝑠(𝑖) + 𝛼. b ∗ r(𝑖)]𝑁
𝑖=1 ∗ 𝑟(𝑖)
= 1
𝑁∑ 𝑠(𝑖)𝑁
𝑖=1 ∗ 𝑟(𝑖) +1
𝑁∑ 𝛼. 𝑏𝑁
𝑖=1 ∗ 𝑟(𝑖)2 (2.13)
Để lấy được chuỗi tin đã giấu thì ta cần điều chỉnh sao cho phần thứ nhất của
công thức (2.13) nhỏ hơn so với phần thứ 2. Nếu không thoả mãn yêu cầu này thì tin
nhận được khi giải se bị sai. Giải pháp để đảm bảo yêu cầu phần thứ 2 trong công
37
thức (2.13) lớn hơn là sử dụng phương pháp tiền xử lý trên tín hiệu x(n), chẳng hạn
lọc để loại bỏ s(n) ra khỏi x(n).
Có rất nhiều phương pháp trải phổ đã được nhiều nhóm tác giả nghiên cứu như
[27, 43, 44, 45, 56, 75]. Các phương pháp này rất hay nhưng đều gặp phải những trở
ngại đáng kể, đó là cần tốn rất nhiều thời gian để lọc nhiễu.
2.3.6. Phương pháp điều chỉnh biên độ
Trong phương pháp này, thông tin được nhúng bằng cách thay đổi năng lượng
của 2 hay 3 khối (block). Năng lượng của mỗi block kích thước N được xác định như
công thức (2.14):
𝐸 = ∑ 𝑎𝑏𝑠(𝑆(𝑖))𝑁𝑖=1 (2.14)
Nếu các tín hiệu trong khối có biên độ lớn thì năng lượng của khối se cao.
Hình 2.11. Biên đô và năng lượng của tin hiệu [32]
Giả sử có hai block liền nhau được dùng để nhúng thông tin. Ta có thể làm cho
năng lượng của hai block A và B giống hay khác nhau bằng cách chỉnh sửa biên độ
của từng block. Gọi EA và EB lần lượt là năng lượng của block A và block B.
- Nếu E A ≥ EB – ℓ, ta xác định bit giá trị của thông điệp mật m = 0.
- Nếu EA < EB -ℓ, ta xác định bit giá trị thông điệp mật m = 1.
Phương pháp này có hạn chế khi độ lệch hai khối lớn. Giả sử block A có năng
lượng cao hơn nhiều so với block B. Khi bit thông điệp mật m nhúng vào là 0 se
không có vấn đề gì. Ngược lại, nếu giấu bit 1 ta phải điều chỉnh sao cho năng lượng
EB lớn hơn EA. Vì khoảng năng lượng giữa hai block chênh lệch nhau rất lớn, do đó,
sau khi chỉnh sửa, kết quả đạt được không còn tự nhiên như lúc đầu mà rất dễ bị phát
hiện. Vấn đề khó khăn này có thể được giải quyết bằng cách sử dụng đến ba block
thay vì sử dụng hai block, hoặc có thể sử dụng nhiều hơn.
38
2.3.7. Phương pháp lượng tử hoá (quantization)
Phương pháp lượng tử hoá se thay thế giá trị một mẫu x thành y để giấu tin.
Công thức điều chỉnh x thành y như sau:
𝑦 = {𝑞(𝑥, 𝐷) +
𝐷
4 𝑛ế𝑢 𝑔𝑖ấ𝑢 𝑏𝑖𝑡 1
𝑞(𝑥, 𝐷) −𝐷
4 𝑛ế𝑢 𝑔𝑖ấ𝑢 𝑏𝑖𝑡 0
(2.15)
Trong công thức (2.15), 𝑞(. ) là hàm lượng tử và 𝐷 là bước lượng tử. Hàm lượng
tử 𝑞(𝑥, 𝐷) như công thức (2.16):
𝑞(𝑥, 𝐷) = [𝑥/𝐷] ∗ 𝐷 (2.16)
Trong đó [𝑥] là hàm lấy số nguyên gần x nhất. Hình 2.12 minh hoạ cho phương
pháp lượng tử.
Giả sử một mẫu dữ liệu x được lượng tử đến vị trí nốt đen 𝑞(𝑥, 𝐷). Nếu giá trị
bit cần giấu là 0 thì se điều chỉnh để di chuyển đến vị trí nốt trắng, ngược lại se được
di chuyển đến nốt chéo.
Hình 2.12. Sơ đồ điều chỉnh gia tri [32]
Ví dụ x=81, D = 8, khi đó 𝑞(𝑥, 𝐷) =𝑞(81, 8) = 80. Nếu cần giấu bit 1 thì y=82,
ngược lại y se bằng 78 nếu giấu bit 0.
Công thức trích 1 bit b khi giải tin như sau:
𝑏 = {1 𝑛ế𝑢 0 < 𝑦 − 𝑞(𝑥, 𝐷) ≤
𝐷
4
0 𝑛ế𝑢 −𝐷
4≤ 𝑦 − 𝑞(𝑥, 𝐷) < 0
(2.17)
Một cải tiến của phương pháp này được [17] đưa ra bằng cách dùng thêm một
vector phụ (vector dither). Công thức điều chỉnh như sau:
𝑦𝑚 = 𝑞(𝑥 + 𝑑𝑚, 𝐷) − 𝑑𝑚 (2.18)
39
Trong đó m là chỉ số và 𝑑𝑚 là phần tử thứ m của vector phụ. Ví dụ cho 𝑑1=2,
𝑑2=0, x=8 và D = 4 thì 𝑦1= 10 và 𝑦2= 8.
2.3.8. Phương pháp điều chế tỉ lệ thời gian
Phương pháp điều chỉnh tỉ lệ thời gian được thực hiện bằng cách kéo dài hoặc
rút ngắn tỉ lệ thời gian âm thanh. Ý tưởng cơ bản của phương pháp này là thay đổi tỉ
lệ thời gian giữa hai cực (tức là hai giá trị cực đại và cực tiểu trong đoạn xét). Khoảng
giữa hai cực được chia làm N phân đoạn bằng nhau. Ta thay đổi độ dốc của tín hiệu,
tuỳ thuộc vào bit muốn nhúng. Ví dụ dốc thoải để giấu bit 1, dốc đứng để giấu bit 0.
Hình 2.13. Điều chỉnh đô dôc để giấu thông tin [32]
Trong [46] trình bày thuật toán giấu dùng phương pháp điều chỉnh tỉ lệ thời gian
nâng cao cải tiến khả năng chống tấn công chỉnh sửa tỉ lệ thời gian.
2.3.9. Phương pháp giấu dựa vào Patchwork
Phương pháp Patchwork nhúng một lượng giá trị vào trong dữ liệu gốc, ban
đầu được thiết kế cho giấu tin trong ảnh. Thuật toán giấu tin theo sơ đồ này gồm hai
bước chính:
Bước 1) Chọn 2 tập ngẫu nhiên A, B
Bước 2) Thêm vào giá trị d cho mỗi phần tử thuộc tập A và trừ ra d đối với
mỗi phần tử thuộc tập B, 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 sanh gia tri trung bình của tin 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 se lớn hơn
và giá trị nhỏ se 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. Gia tri trung bình của tin 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 se 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 se 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’ se được truyền đi ra môi trường công cộng và bên nhận se
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 se
giải được M’ từ C’’ thay vì có được M từ C’. Se 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 hoa 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 se 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 se đượ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 se đượ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 se được mã hóa thành
từ mã là v = 0110011 và truyền đi.
Bên nhận se 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 se 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 se được mã hoá dùng mã Hamming se 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’ se 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 se 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 se 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. Gia tri 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 se 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. Phat 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 se đượ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 se 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 se 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 se 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 se 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) se đượ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 se 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 se sai khác nhau 2 đơn vị.
Hình 3.4. Đô sai khac 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 se 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 se 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 se 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 se đổ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 se đổ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 se đổi bit ở vị trí 1 thành 0 và
nếu đổi bit ở vị trí 2 từ 1 thành 0 ta se đổ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 khac khi sử dụng kỹ thuật điều chỉnh cac 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 se đượ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 se 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ố se đượ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 se 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 se đượ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 se 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 se
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ỷ se 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
LC
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 se làm cho
người thám tin khó rút trích thông tin. Kỹ thuật điều chỉnh bit se 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 gốc và tệp âm thanh mang tin. Hình 3.6 minh hoạ cho một đoạn dữ liệu âm
thanh gồm 200 mẫu của tệp âm thanh gốc và tệp âm thanh mang tin, sau khi giấu 808
byte dữ liệu, tương ứng với 6464 bit vào tệp âm thanh gốc.
Hình 3.6. Đoan dữ liệu tệp âm thanh gôc (trên) và tệp có chứa tin mật (dưới)
Thử nghiệm giấu các tệp dữ liệu mật khác nhau vào nhiều tệp âm thanh khác
nhau cũng cho thấy tệp mang tin đáp ứng được tiêu chí về tham số SNR khi giấu tin.
Bảng 3.3 thể hiện các giá trị thử nghiệm.
Bảng 3.3. Bảng gia tri SNR khi giấu tin theo phương phap điều chỉnh nhóm bit
Tên tệp chứa
Giá trị SNR
dohoa.cpp
(430 byte)
DuyTanlogo.bmp
(1694 byte)
map.gif
(14845 byte)
jarre-in.wav 71.52 65.46 56.14
gazebo-in.wav 72.03 66.23 56.77
brahms-in.wav 70.37 64.54 54.69
speech-in.wav 64.80 58.91 49.49
56
3.3. Thuật toán giấu bằng điều chỉnh 2 mẫu trong một đoạn chứa 25 mẫu
Mục này của luận án se trình bày về một thuật toán giấu trên âm thanh dựa
trên những điều chỉnh thuật toán CPT (Chen-Pan-Tseng) [18]. CPT là lược đồ giấu
tin vào ảnh đen trắng. Trong thuật toán đề xuất không dùng hai ma trận làm khoá như
trong sơ đồ của CPT để giảm thời gian tính toán, thay vào đó se xáo trộn dữ liệu mật
trước khi giấu. Thuật toán giấu gồm hai giai đoạn. Giai đoạn 1 thực hiện xáo trộn dữ
liệu mật, dùng phép biến đổi Arnold. Giai đoạn 2 se giấu chuỗi tin đã được xáo trộn
vào trong tệp âm thanh bằng cách giấu tuần tự 4 bit trong 25 mẫu hay 1 byte dữ liệu
mật trong 50 mẫu dữ liệu âm thanh. Chuỗi bit (hay chuỗi các byte mật cần giấu) được
xáo trộn trước khi giấu nhằm mục đích làm cho người thám tin khó lấy lại thông tin
mật trong trường hợp dò được chuỗi tin mật. Để giấu một byte dữ liệu, thuật toán
thực hiện điều chỉnh nhiều nhất 4 bit của của 4 mẫu trong 2 khối, mỗi khối 25 mẫu.
3.3.1. Xáo trộn dữ liệu
Trong kỹ thuật đề xuất sử dụng phép biến đổi Arnold để xáo trộn dữ liệu. Chi
tiết về phép biến đổi Arnold đã được trình bày ở mục 2.12. Để có thể áp dụng phép
biến đổi này cho chuỗi dữ liệu thì chuỗi mật được cắt ra thành các đoạn bằng nhau
sau đó ghép lại thành khối vuông. Trong trường hợp không chuyển được thành các
khối vuông thì ta dùng các byte đệm (padding) để tạo thành khối vuông. Sau khi giải
tin thì các byte đệm này se được loại ra.
Hình 3.7 minh hoạ kỹ thuật sử dụng các byte đệm khi chuyển 17 byte dữ liệu
thành khối vuông có kích thước 5*5.
Hình 3.7. Minh hoa kỹ thuật padding
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
57
Đối với chuỗi thông điệp mật dài, ta có thể chuyển thành các khối nhỏ rồi thực
hiện biến đổi trên khối nhỏ đó. Ví dụ với 17 byte thì ta có thể chia thành hai khối 3*3,
như vậy ta se thêm 1 byte ghép thay vì 8 byte nếu như ta chuyển thành khối 5*5.
Nếu ta chia dữ liệu giấu thành các khối nhỏ thì có ưu điểm là làm giảm số byte
thừa vô nghĩa thêm vào trong khối. Nhược điểm của cách trên là nếu khối quá nhỏ
thì có chu kỳ ngắn, làm cho người thám tin dễ lần ra tin mật hơn so với khối lớn.
Sau khi xáo trộn xong, khối vuông se được chuyển thành dãy 1 chiều, được
lấy tuần tự theo từng dòng. Ví dụ 17 byte dữ liệu được đánh số và ghép thành khối
như hình 3.7 se được xáo trộn và ghép lại như hình 3.8 với số lần dịch chuyển là 3.
Hình 3.8. Vi tri cac byte sau khi xao trôn
3.3.2. Thuật toán giấu 4 bit trong khối 25 mẫu dữ liệu
Mô hình CPT điều chỉnh (Modify CPT - MCPT) se thực hiện giấu 4 bit dữ liệu
trong đoạn 25 mẫu dữ liệu của tệp âm thanh, trong đó thay đổi tối đa 2 bit của 2 mẫu
dữ liệu. Đoạn gồm 25 mẫu se được chuyển thành khối F có kích thước 5*5. Chi tiết
thuật toán MCPT giấu 4 bit trên khối như sau :
Đầu vào: - Khối dữ liệu chứa F có kích thước 5*5, 4 bit mật b1b2b3b4 cần giấu.
Đầu ra: - Khối dữ liệu mang tin mật F’.
Các bước của thuật toán giấu như sau:
Bước 1) Xây dựng ma trận A từ các LSB của khối F, A[i][j] = LSB(F[i][j])
Bước 2) Lấy 4 dòng đầu của A, mỗi dòng thực hiện phép XOR tất cả các
phần tử trong dòng, ta có r1r2r3r4.
Bước 3) Lấy 4 cột đầu tiên của A, mỗi cột thực hiện XOR tất cả các phần tử
của mỗi cột để được c1c2c3c4.
58
Bước 4) Thực hiện XOR kết quả trong bước 2 và bước 3 để có s1s2s3s4 trong
đó s1=r1 XOR c1, s2=r2 XOR c2 và tương tự như vậy.
Bước 5) So sánh kết quả của Bước 4) với 4 bit cần giấu b1b2b3b4. Nếu không
có sự khác nhau thì không cần phải điều chỉnh trên khối bit A. Ngược lại, cần xét
các trường hợp sau:
• Nếu có khác nhau 1 bit bi tại vị trí i thì A[i][5] được điều chỉnh lật.
• Nếu có khác nhau trên 2 bit bi và bj tại vị trí i và j thì A[i][j] được lật.
• Nếu có khác nhau trên 3 bit bi, bj và bk tại 3 vị trí i, j, k thì A[i][j] được lật
và A[k][5] được lật.
• Nếu có khác nhau trên cả 4 bit bi, bj, bk và bm tại 4 vị trí i, j, k, m thì thực
hiện lật A[i][j] và A[k][m].
Bước 6) Đặt các bit LSB của khối F[i][j] giống A[i][j] ta được khối F’.
3.3.3. Thuật toán giấu tin
Thuật toán giấu tin được minh hoạ như hình 3.9. Việc xáo trộn chuỗi tin mật
có thể thực hiện trên chuỗi các bit hoặc chuỗi các byte, sau đó chuyển chuỗi các byte
sang chuỗi bit rồi thực hiện giấu.
Hình 3.9. Sơ đồ giấu tin
Thuật toán giấu:
Đầu vào: - Tệp âm thanh gốc F, khoá mật K, thông điệp mật M.
Đầu ra: - Tệp âm thanh chứa tin mật F’.
Bước 1) Chuyển thông điệp mật M sang khối vuông rồi dùng phép biến đổi
Arnold để xáo trộn dữ liệu. Khoá K gồm hai số cho biết kích thước khối và số lần
Tệp mang tin
Tệp gốc
Chuỗi bit mật
Khoá
Chia thành các khối 5*5
Xáo trộn dữ liệu
Giấu 4 bit vào mỗi khối
59
thực hiện chuyển đổi. Trong trường hợp chuỗi thông điệp ngắn hơn so với khối vuông,
ta se dùng kỹ thuật padding để thêm các ký hiệu trắng vào thông điệp. Khối thông
điệp này sau đó se được chuyển lại thành M’, là dạng vector.
Bước 2) Chia dữ liệu tệp âm thanh thành các đoạn gồm 25 mẫu, sau đó chuyển
các đoạn sang các khối vuông Fi có kích thước 5*5.
Bước 3) Thực hiện bước sau cho đến khi toàn bộ thông điệp M’ được giấu vào
trong các khối:
Lấy lần lượt 4 bit của M’ giấu vào mỗi khối Fi, sử dụng sơ đồ giấu MCPT trên.
Bước 4) Chuyển tất cả các khối Fi sang lại dạng vector và ghi ra tệp F’. Ghi
các mẫu còn lại từ F vào F’.
3.3.4. Thuật toán giải tin
Thuật toán giải tin gồm hai bước, đó là bước tách các bit trong khối và thực
hiện khôi phục lại chuỗi bit.
Đầu vào: - Tệp chứa tin mật, khoá K và độ dài chuỗi bit giấu q.
Đầu ra: - Chuỗi thông điệp mật.
Bước 1) Chia tệp âm thanh thành các đoạn có kích thước bằng nhau và bằng
25. Mỗi đoạn này se biến đổi thành khối F kích thước 5*5.
Bước 2) Lấy 4 bit trong mỗi khối giấu:
a) Thành lập ma trận A có kích thước 5*5. Giá trị A[i][j] se bit cuối, bit ít
quan trọng nhất của F[i][j].
b) Lấy 4 dòng đầu của A, mỗi dòng thực hiện phép exclusive-or tất cả các
phần tử trong dòng, ta có r1r2r3r4.
c) Lấy 4 cột đầu tiên của A, mỗi cột thực hiện exclusive-or tất cả các phần tử
của mỗi cột để được c1c2c3c4.
d) Thực hiện XOR giữa r1r2r3r4 và c1c2c3c4 để có s1s2s3s4 trong đó s1=r1 XOR
c1, s2=r2 XOR c2 và tương tự như vậy.
Lặp Bước 2 trên mỗi khối cho đến khi nào ⌈𝑞
𝑁2⁄ ⌉ ∗ 𝑁2 bit được lấy ra.
60
Bước 3) Dùng khoá K và thực hiện phép biến đổi Arnold, xoá các padding
nếu có để lấy lại thông điệp mật M.
Ví dụ ta có đoạn âm thanh gồm 25 mẫu có giá trị như sau:
{18, 39, 65526, 8, 65526, 20, 27, 40, 50, 18, 37, 42, 4, 78, 65519, 46, 65514,
29, 65508, 31, 65500, 5, 65486, 0, 65482}.
Chúng ta chuyển đoạn sang dạng ma trận F5*5 bằng cách lấy lần lượt 5 phần
tử của dãy và gán cho mỗi dòng của F. Sau đó dựa vào F ta có ma trận A.
Hình 3.10. Ma trận F và A tương ứng từ cac mẫu dữ liệu
Áp dụng Bước 2 trong thuật toán giấu trên khối A, ta có r1r2r3r4 như sau:
Hình 3.11. Kết quả XOR 4 côt đầu tiên của từng hàng
Hình 3.12. Kết quả XOR 4 dòng đầu tiên của từng côt
Thực hiện Bước 3 trong thuật toán giấu, ta có c1c2c3c4 như hình 3.12. Thực
hiện Bước 4 trong thuật toán giấu ta có kết quả s1s2s3s4 như sau:
Hình 3.13. Kết quả XOR của chuỗi C và chuỗi R
Nếu ta cần giấu 4 bit 0010, do 4 bit giống hoàn toàn với chuỗi S nên ta không
cần thực hiện điều chỉnh nào trên khối dữ liệu.
18 39 65526 8 65526
20 27 40 50 18
37 42 4 78 65519
46 65514 29 65508 31
65500 5 65486 0 65482
0 1 0 0 0
0 1 0 0 0
1 0 0 0 1
0 0 1 0 1
0 1 0 0 0
r1 r2 r3 r4
1 1 0 0
c1 c2 c3 c4
1 1 1 0
s1 s2 s3 s4
0 0 1 0
61
Nếu ta cần giấu 4 bit 0110, do có 1 bit khác nhau với S ở vị trí 2, vì thế ta lật
giá trị ô A[2][5], từ đó dẫn đến điều chỉnh F[2][5]. Kết quả như trong hình 3.14.
Hình 3.14. Kết quả giấu 4 bit 0110 trong khôi F
Nếu ta cần giấu 4 bit 0111 vào trong khối F, do có 2 bit khác nhau với S ở vị
trí 2 và 4, vì thế ta lật giá trị ô A [2][4]. Kết quả điều chỉnh và giá trị các mẫu dữ liệu
âm thanh được thể hiện trong hình 3.15.
Hình 3.15. Kết quả giấu 4 bit 0111 trong khôi F
Nếu ta cần giấu 4 bit 1100, có 3 bit khác nhau với S ở vị trí 1, 2 và 3, vì thế ta
lật giá trị ô A[1][2] A[3][5]. Kết quả điều chỉnh và giá trị các mẫu dữ liệu âm thanh
được thể hiện trong hình 3.16.
Hình 3.16. Kết quả giấu 4 bit 1100 trong khôi F
18 39 65526 8 65526
20 27 40 50 19
37 42 4 78 65519
46 65514 29 65508 31
65500 5 65486 0 65482
0 1 0 0 0
0 1 0 0 1
1 0 0 0 1
0 0 1 0 1
0 1 0 0 0
18 38 65526 8 65526
20 27 40 50 19
37 42 4 78 65518
46 65514 29 65508 31
65500 5 65486 0 65482
0 0 0 0 0
0 1 0 0 1
1 0 0 0 0
0 0 1 0 1
0 1 0 0 0
18 39 65526 8 65526
20 27 40 51 19
37 42 4 78 65519
46 65514 29 65508 31
65500 5 65486 0 65482
0 1 0 0 0
0 1 0 1 1
1 0 0 0 1
0 0 1 0 1
0 1 0 0 0
62
Nếu ta cần giấu 4 bit 1101, có 4 bit khác nhau với S ở vị trí 1, 2, 3 và 4, vì thế
ta lật giá trị ô A[1][2] và A[3][4]. Kết quả điều chỉnh và giá trị các mẫu dữ liệu âm
thanh được thể hiện như hình 3.17.
Hình 3.17. Kết quả giấu 4 bit 1101 trong khôi F
3.3.5. Kết quả thử nghiệm và đánh giá
Dưới đây là một kết quả thực nghiệm. Thông tin mật được giấu là dữ liệu ảnh
logo đại học Duy Tân, có kích thước 64*64. Tệp âm thanh chứa được lấy mẫu ở tần
số 44.1 Hz, dài 58 giây. Khoá K gồm thông tin về số lần dịch chuyển là 4 và kích
thước khối là 64. Từ dữ liệu ảnh chuyển đổi này se chuyển thành chuỗi bit để giấu.
Hình 3.18. Ảnh gôc và ảnh sau khi chuyển đổi để giấu tin
Hình 3.19 là biểu diễn một đoạn gồm 50 mẫu của tệp âm thanh gốc và 50 mẫu
của tệp âm thanh mang tin sau khi giấu 1 byte dữ liệu. Khi đánh giá theo thang đo
ODG giữa hai tệp cho thấy không thể phân biệt được sự khác nhau giữa hai tệp.
Hình 3.19. Tin hiệu âm thanh trước (trên) và sau khi giấu tin (dưới)
18 38 65526 8 65526
20 27 40 50 19
37 42 4 79 65519
46 65514 29 65508 31
65500 5 65486 0 65482
0 0 0 0 0
0 1 0 0 1
1 0 0 1 1
0 0 1 0 1
0 1 0 0 0
a
)
63
Bảng 3.4. Bảng gia tri SNR khi giấu tin vào trong cac tệp theo kỹ thuật MCPT
Tên tệp chứa
Giá trị SNR
dohoa.cpp
(430 byte)
DuyTanlogo.bmp
(1694 byte)
map.gif
(14845 byte)
jarre-in.wav 82.57 76.04 66.63
gazebo-in.wav 82.57 76.65 67.21
brahms-in.wav 80.51 74.66 65.19
speech-in.wav 75.37 69.42 59.95
Kết quả thử nghiệm giấu nhiều tệp khác nhau trên nhiều tệp âm thanh khác
nhau cũng cho thấy kỹ thuật đề xuất đáp ứng được tiêu chí hệ số SNR khi giấu tin.
So với mô hình CPT áp dụng trên ảnh, kỹ thuật điều chỉnh không sử dụng các
phép nhân ma trận con trong quá trình giấu và giải tin nên thời gian thực hiện khi
giấu và giải tin nhanh hơn. Tuy nhiên hạn chế của của kỹ thuật là độ mật không cao.
Trong mô hình CPT, hai ma trận K và W được dùng làm khoá. Số cách chọn ma trận
K là 2m*n và số cách chọn W là (2r -1)m*n. Người thám tin se rất khó dò ra tin mật vì
số cách chọn K và W là quá lớn. Để giấu log(mn+1) bit trong khối m*n, mô hình
CPT có độ phức tạp là O(m*n*n). Kỹ thuật đề xuất chọn mỗi đoạn có kích thước 25
để giấu 4 bit, mục đích là để thuận lợi cho việc giấu từng byte dữ liệu. Để khắc phục
tính dễ lộ tin giấu của kỹ thuật, thuật toán đề xuất sử dụng phép biến đổi Arnold để
xáo trộn dữ liệu. Chi phí cho mỗi lần thực hiện biến đổi khối là O(N2), trong đó N là
kích thước của khối. Đối với mỗi khối ta thực hiện k lần biến đổi để xáo trộn dữ liệu.
Nếu chuỗi tin mật có độ dài q thì số khối cần xáo trộn là ⌈𝑞
𝑁2⁄ ⌉.
Phương pháp điều chỉnh LSB nguyên thuỷ thay đổi 1 bit dữ liệu để giấu 1 bit
tin mật, cho phép giấu nhiều tin nhưng dễ gây nhiễu lên dữ liệu chứa. So với kỹ thuật
điều chỉnh LSB, kỹ thuật này giảm một nửa số lần điều chỉnh bit để giấu cùng số bit
dữ liệu. Phương pháp giấu chẵn lẻ se thay đổi một mẫu trong khối để giấu 1 bit, dựa
vào tính chẵn lẻ của khối và bit cần giấu. Để giấu 4 bit, kỹ thuật giấu chẵn lẻ cũng
điều chỉnh nhiều nhất 4 bit của 4 mẫu. Như vậy, so với kỹ thuật giấu chẵn lẻ, kỹ thuật
b
)
64
đề xuất điều chỉnh ít mẫu hơn, trong khi đó dung lượng giấu có thể xem tương đương.
Để giấu 4 bit dữ liệu ta cần 25 mẫu dữ liệu âm thanh, hay 1 byte dữ liệu cần 50 mẫu.
Tính an toàn của lược đồ giấu phụ thuộc vào việc xáo trộn dữ liệu. Thực chất
của việc xáo trộn dữ liệu là thay đổi thứ tự nhúng các bit mật vào trong các mẫu dữ
liệu. Nếu người thám tin biết phương pháp điều chỉnh để giấu bit nhưng không biết
thứ tự lấy các bit thì cũng không biết được tin mật. Vì vậy việc chọn khối có kích
thước lớn để xáo trộn dữ liệu là cần thiết.
Kỹ thuật này chỉ phù hợp cho giấu tin mật trong âm thanh, không phù hợp cho
thuỷ vân do không bền vững với các tấn công. Dựa vào đặc tính ít điều chỉnh dữ liệu
của kỹ thuật, ta có thể nâng cao tính bền vững bằng cách chọn các bit ở mức cao hơn
để giấu tin thay vì sử dụng bit ở vị trí 1 của mẫu dữ liệu.
3.4. Thuật toán điều chỉnh 1 bit trong khối để giấu 8 bit dữ liệu
Phần này của luận án trình bày về một thuật toán giấu 8 bit dữ liệu trong đoạn
chứa 256 mẫu dữ liệu bằng cách thay đổi 1 bit. Ý tưởng thuật toán dựa vào kỹ thuật
giấu tin trong ảnh của nhóm tác giả trình bày trong [68], áp dụng trên dữ liệu âm
thanh. Thuật toán giấu cũng bao gồm hai bước là hoán vị chuỗi dữ liệu trước khi giấu
và giấu lần lượt 8 bit dữ liệu đã được hoán vị vào trong mỗi khối gồm 256 mẫu.
3.4.1. Xáo trộn dữ liệu bằng phương pháp hoán vị
Để xáo trộn dữ liệu, trong thuật toán này luận án đề xuất cách dùng hoán vị.
Cho M là chuỗi tin mật cần giấu. Chuỗi M này se được xáo trộn bằng cách hoán vị
các phần tử. Thuật toán hoán vị dãy n phần tử đã được trình bày trong chương 2.
Bước hoán vị này cần khoá là bộ (d, k). Chuỗi M se được chia thành các đoạn
bằng nhau có độ dài d. Trong trường hợp nếu không đủ d thì ta thêm các ký tự đệm,
là các ký tự trắng (blank, mã ASCII là 32). Hình 3.20 dưới đây minh hoạ cho chuỗi
tin mật là “hello world” và giá trị của d là 8, khi đó ta se dùng 5 ký tự bù.
Hình 3.20. Sử dụng ký tự bù cho chuỗi tin mật
h e l l o w o r l d
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
65
Phần tử thứ 2 trong bộ khoá là giá trị k. Giá trị của k là một số nguyên nằm
trong đoạn từ 1 đến d!, ở đây d! là số hoán vị của tập gồm d phần tử. Việc hoán vị
được thực hiện trên mỗi đoạn gồm d phần tử riêng lẻ.
Hình 3.21. Chuỗi tin gôc và chuỗi sau khi hoan vi
Ví dụ ta cần xáo trộn chuỗi M là “hello world” dùng phương pháp hoán vị, với
khoá là bộ (8,1000). Ta có hoán vị thứ 1000 của các phần tử {1,2,3,4,5,6,7,8} là
{1,3,5,4,7,8,2,6}, vì thế giá trị của chuỗi M’ nhận được là “hlolwoe rd l ”. Kết quả
minh hoạ như trong hình 3.21.
Để khôi phục lại chuỗi tin gốc M từ chuỗi xáo trộn M’ ta cần phải dùng khoá
là bộ (d, k). Từ khoá (d, k) ta xây dựng cấu hình hoán vị thứ k của bộ d phần tử {1,
2, 3, …d}. Chuỗi nhận được khi giải tin là hoán vị thứ k nên tương ứng với mỗi vị
trí, ta khôi phục lại chuỗi ban đầu. Hình 3.22 minh hoạ cho việc khôi phục chuỗi gốc
M từ chuỗi hoán vị M’ là “hachilan” và khoá là bộ (8, 5398).
Hình 3.22. Khôi phục lai chuỗi gôc từ chuỗi hoan vi
3.4.2. Tính tổng XOR của đoạn
Dưới đây là thuật toán tính tổng XOR của đoạn gồm 256 mẫu.
Đầu vào: - Đoạn S gồm 256 mẫu giá trị nguyên, được đánh số từ S[0] đến S[255].
Đầu ra: - Một số nguyên được gọi là XOR_sum của đoạn S.
Bước 1) Từ mảng S ta xác định mảng Q có cùng kích thước với S, trong đó
Q[i] = S[i]%2.
Hoán vị thứ 5398
2 1 5 8 7 6 3 4
h a c h i l a n
1 2 3 4 5 6 7 8
a h a n c l i h
h e l l o w o r l d
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
Hoán vị thứ 1000 Hoán vị thứ 1000
1 3 5 4 7 8 2 6 1 3 5 4 7 8 2 6
h l o l w o e r d l
66
Bước 2) h=0;
Bước 3) Lặp i từ 0 đến 255: Nếu (Q[i]!=0) thì h = XOR(h,i);
Bước 4) Trả về h;
Sau đây là minh hoạ cho cách tính XOR_sum của dãy 256 mẫu. Hình 3.23 là giá trị
của đoạn âm thanh gồm 256 mẫu, các mẫu tuần tự theo dòng, từ dòng 1 đến dòng 16.
Từ các giá trị của các mẫu trong đoạn âm thanh, ta lập dãy Q cũng gồm 256
phần tử, trong đó Q[i] có giá trị là bit cuối của mẫu thứ i, như hình 3.24.
Hình 3.23. Cac gia tri của đoan âm thanh gồm 256 mẫu
130 130 131 131 132 132 132 131 131 130 129 128 127 126 126 125
125 125 125 125 125 126 126 126 126 126 126 126 126 127 127 128
128 129 130 130 131 131 131 132 132 132 132 132 132 132 133 133
133 133 133 132 132 132 131 130 130 129 128 127 127 126 126 125
125 125 125 125 125 125 125 125 126 126 126 126 126 126 126 126
126 126 126 126 126 126 126 126 125 125 125 124 124 124 124 124
124 124 124 124 124 123 123 123 123 124 124 124 124 125 125 125
125 124 124 122 121 119 118 116 115 114 114 114 115 116 117 119
121 122 124 125 126 127 128 128 128 129 129 129 129 128 128 128
127 127 126 126 126 125 125 125 126 126 126 127 127 128 128 128
128 128 127 127 126 126 125 125 125 125 125 125 125 125 126 126
127 127 128 128 128 128 128 129 129 129 129 129 129 129 129 129
129 129 129 129 129 128 128 128 127 127 127 127 127 127 127 127
127 127 128 128 128 128 128 128 128 127 127 127 126 126 125 125
125 124 124 123 123 123 122 122 122 122 122 122 123 123 123 124
124 124 124 124 124 124 124 124 124 124 124 124 124 124 125 125
67
0 0 1 1 0 0 0 1 1 0 1 0 1 0 0 1
1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0
0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 1
1 1 1 0 0 0 1 0 0 1 0 1 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1
1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1
1 0 0 1 0 1 0 0 0 1 1 1 1 0 0 0
1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0
0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0
1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1
1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1
1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1
1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
Hình 3.24. Gia tri của dãy Q tương ứng với cac mẫu
Từ giá trị của dãy Q, ta tính giá trị XOR_sum của dãy. Hình 3.25 minh hoạ
cho giá trị XOR_sum lần lượt qua mỗi bước tính. Kết quả XOR_sum của dãy là 11.
Hình 3.25. Gia tri XOR_sum của dãy Q qua cac bước tinh
0 0 2 1 0 0 0 6 14 0 4 0 8 0 0 7
23 6 20 7 19 0 0 0 0 0 0 0 0 14 16 0
0 49 0 0 21 48 22 0 0 0 0 0 0 0 56 23
39 22 36 0 0 0 18 0 0 43 0 16 44 0 0 19
83 18 80 19 87 18 84 19 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 75 18 72 0 0 0 0 0
0 0 0 0 0 45 75 44 68 0 0 0 0 41 71 40
88 0 0 0 44 89 0 0 33 0 0 0 93 0 35 92
220 0 0 95 0 218 0 0 0 83 217 82 222 0 0 0
78 223 0 0 0 74 220 75 0 0 0 208 76 0 0 0
0 0 238 77 0 0 235 76 228 77 231 76 224 77 0 0
235 76 0 0 0 0 0 251 67 250 64 251 71 250 68 251
59 250 56 251 63 0 0 0 247 62 244 63 243 62 240 63
239 62 0 0 0 0 0 0 0 231 61 230 0 0 56 231
7 0 0 228 0 229 0 0 0 0 0 0 9 228 10 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 11
68
3.4.3. Thuật toán giấu một byte dữ liệu vào trong khối 256 mẫu
Dưới đây là thuật toán giấu một byte dữ liệu vào trong đoạn gồm 256 mẫu
nhưng chỉ thay đổi 1 bit của một mẫu trong đoạn dữ liệu chứa.
Đầu vào: - Đoạn dữ liệu chứa gồm 256 mẫu (S[0..255]) và byte cần giấu p.
Đầu ra: - Đoạn chứa tin S[0..255].
Bước 1) Tính XOR_sum của đoạn S: h=XOR_sum(S);
Bước 2) Tìm vị trí của mẫu cần thay đổi để giấu tin: pos= XOR (h, p);
Bước 3) Lật một bit của mẫu tại vị trí pos để giấu byte p:
Nếu giá pos = 0 thì thỏa điều kiện giấu, không cần điều chỉnh.
Nếu giá trị pos > 0 thì điều chỉnh mẫu tại vị trí pos, có tham gia trong
quá trình tính XOR_sum hoặc không: Q[pos] = 1 - Q[pos];
Bước 4) Điều chỉnh giá trị mẫu tại ví trí pos để giấu tin nếu pos>0
Nếu Q[pos] = 0 thì S[pos] = S[pos] +1, ngược lại S[pos] = S[pos] - 1.
130 130 131 131 132 132 132 131 131 130 129 128 127 126 126 125
125 125 125 125 125 126 126 126 126 126 126 126 126 127 127 128
128 129 130 130 131 131 131 132 132 132 132 132 132 132 133 133
133 133 133 132 132 132 131 130 130 129 128 127 127 126 126 125
125 125 125 125 125 125 125 125 126 126 126 126 126 126 126 126
126 126 126 126 126 126 126 126 125 125 125 124 124 124 124 124
124 124 124 124 124 123 123 123 123 124 124 124 124 125 125 125
125 125 124 122 121 119 118 116 115 114 114 114 115 116 117 119
121 122 124 125 126 127 128 128 128 129 129 129 129 128 128 128
127 127 126 126 126 125 125 125 126 126 126 127 127 128 128 128
128 128 127 127 126 126 125 125 125 125 125 125 125 125 126 126
127 127 128 128 128 128 128 129 129 129 129 129 129 129 129 129
129 129 129 129 129 128 128 128 127 127 127 127 127 127 127 127
127 127 128 128 128 128 128 128 128 127 127 127 126 126 125 125
125 124 124 123 123 123 122 122 122 122 122 122 123 123 123 124
124 124 124 124 124 124 124 124 124 124 124 124 124 124 125 125
Hình 3.26. Gia tri mới của dãy S
69
Tệp mang tin
Chia thành các đoạn
gồm 256 mẫu
Giấu tin
Tệp gốc
Xáo trộn dùng phương
pháp hoán vị
Dữ liệu mật
Khoá
Ví dụ ta cần giấu ký tự ‘z’ vào trong dãy 256 mẫu có giá trị như hình 3.24. Ta
có XOR_sum của đoạn là 11 và ký tự ‘z’ có mã ASCII là 122. Ta thực hiện phép toán
XOR giữa 11 và 122 ta được 113. Kết quả này khác 0 nên ta điều chỉnh giá trị mẫu
tại vị trí 113 (lật bit cuối). Giá trị cũ tại vị trí S[113] là 124 se điều chỉnh thành 125.
Tất cả các giá trị khác của dãy không thay đổi. Kết quả như hình 3.26.
3.4.4. Thuật toán giấu tin
Hình 3.27 mô tả các bước thuật toán giấu tin sử dụng XOR_sum của khối.
Hình 3.27. Sơ đồ giấu tin dùng XOR_sum của khôi
Chi tiết thuật toán giấu như sau:
Đầu vào: - Tệp âm thanh F, khoá (k, d), và thông điệp mật cần giấu M.
Đầu ra: - Tệp âm thanh F’ chứa tin mật.
Bước 1) Chia thông điệp mật M thành các đoạn có cùng độ dài d. Dựa vào giá
trị k, và phương pháp hoán vị, xáo trộn M và ta có được M’.
Bước 2) Chia tệp F thành các đoạn Si có độ dài bằng nhau và bằng 256.
Bước 3) Lấy lần lượt từng byte của M’ giấu vào trong đoạn Si theo thuật toán
ở mục 3.4.3 cho đến khi toàn bộ thông điệp được giấu.
Bước 4) Ghi các đoạn Si ra tệp F’.
3.4.5. Thuật toán giải tin
Thuật toán giải tin tương tự như thuật toán giấu nhưng thực hiện theo chiều
ngược lại. Trong quá trình giải tin, ta cần tệp chứa dữ liệu mật, cặp số (k, d) là khoá
và q là dài chuỗi tin mật. Thuật toán giải tin se lần lượt tách từng byte dữ liệu trong
70
mỗi đoạn 256 mẫu, thực hiện khôi phục lại q byte tin mật ban đầu dựa vào khoá (k,
d). Chi tiết thuật toán như sau:
Đầu vào: - Tệp chứa tin mật, khoá (k, d) và q là số byte thông điệp mật cần lấy.
Đầu ra: - Thông điệp mật M.
Bước 1) Lấy h= ddq */ đoạn từ tệp chứa tin mật, mỗi đoạn chứa 256 mẫu.
Bước 2) Lặp thao tác dưới đây h lần để lấy h byte từ các đoạn, mỗi byte trong
mỗi đoạn, byte thứ i được gán cho M’[i].
M’[i] =XOR_sum(Si).
Bước 3) Đối với mỗi đoạn gồm d byte của chuỗi M’, dùng phép biến đổi khôi
phục lại chuỗi tin M như thuật toán đã trình bày ở mục 3.4.1.
3.4.6. Kết quả thử nghiệm và đánh giá
Dưới đây là các hình minh hoạ khi thử nghiệm giấu 2048 byte vào trong tệp
âm thanh có độ dài 32 giây. Hình 3.28 là sóng, phổ của dữ liệu gốc và sóng, phổ của
dữ liệu sau khi giấu tin. Phương pháp giấu này không cho thấy sự khác biệt giữa tệp
âm thanh gốc và tệp mang tin khi đánh giá bằng cảm nhận chủ quan (nghe bằng tai).
Hình 3.28. Sóng, phổ của âm thanh trước (trai) và sau khi giấu (phải)
Bảng 3.5 thể hiện độ đo SNR khi sử dụng kỹ thuật giấu để giấu các tệp dữ liệu
vào các tệp âm thanh khác nhau. Do tệp map.gif có kích thước lớn nên không giấu
được vào các tệp âm thanh. Đối với tệp giấu được (tệp dohoa.cpp và
DuyTanlogo.bmp) thì giá trị SNR của phương pháp giấu này cao hơn.
71
Bảng 3.5. Bảng gia tri SNR khi giấu tin theo thuật toan điều chỉnh môt bit
Tên tệp chứa
Giá trị SNR
dohoa.cpp
(430 byte)
DuyTanlogo.bmp
(1694 byte)
map.gif
(14845 byte)
jarre-in.wav 85.99 80.05 Không giấu được
gazebo-in.wav 86.58 80.64 Không giấu được
brahms-in.wav 84.61 78.62 Không giấu được
speech-in.wav 79.32 32.62 Không giấu được
Phép toán XOR có một số tính chất sau:
1. A B= B A
2. A A= 0
3. A 0= A
4. A B A=B
Trong sơ đồ giấu, một byte dữ liệu mật se được giấu trong đoạn 256 mẫu. Để
giấu byte p vào trong đoạn 256 mẫu, ta cần đảm bảo XOR_sum của đoạn đó bằng giá
trị của p. Nếu như XOR_sum của đoạn khác p ta se điều chỉnh giá trị tại vị trí pos
bằng cách lật bit cuối của mẫu. Ơ đây giá trị pos = h XOR p.
Nếu như mẫu tại vị trí pos trước đây có tham gia và quá trình tính XOR_sum
của khối thì mẫu này se được loại ra, h nếu như trước đây mẫu này không tham gia
vào quá trình tính XOR_sum thì nó se được sử dụng để tính XOR_sum của khối.
Về tỉ lệ dữ liệu, phương pháp LSB điều chỉnh 8 bit trên 8 mẫu dữ liệu âm thanh
để giấu 8 bit. Nếu như có 256 mẫu thì có thể giấu được 8 byte dữ liệu mật. Phương
pháp đề xuất trong mục 3.3 se điều chỉnh tối đa 4 mẫu trong 50 mẫu để giấu 1 byte
dữ liệu. So với phương pháp LSB và phương pháp trong mục 3.3 thì tỉ lệ dữ liệu của
kỹ thuật này thấp hơn nhưng tỉ lệ thay đổi trên dữ liệu gốc se thấp hơn nếu so sánh
theo tiêu chí giấu cùng giấu 1 byte dữ liệu.
Kỹ thuật này cơ bản dựa trên việc điều chỉnh các bit LSB nên chỉ phù hợp với
các ứng dụng giấu tin mật mà không dùng cho ứng dụng đánh dấu bản quyền, do tính
không bền vững trước các tấn công.
72
Do tỉ lệ điều chỉnh bit thấp nên có thể vận dụng giấu vào các bit ở mức cao
hơn nhằm mục đích tăng tính bền vững, hoặc có thể kết hợp giấu trên nhiều mức bit
khác nhau để tăng tỉ lệ giấu.
Tính an toàn của lược đồ giấu phụ thuộc vào khóa, là giá trị d và k. Tính mật
của kỹ thuật có thể tăng nếu như giá trị d được chọn là số đủ lớn. Khi đó số hoán vị
se lớn và khả năng dò để khôi phục tin giấu của người thám tin se thấp hơn do phải
thử nhiều trường hợp hơn.
3.5. Thuật toán giấu điều chỉnh tiếng vọng
Kỹ thuật đề xuất dưới đây là một cải tiến của kỹ thuật đã đề xuất trước đó do
J. A. R. Chavez và các đồng sự đề cập trong [16].
3.5.1. Thuật toán giấu của Rios Chavez
Trong [16] đề xuất một công thức để điều chỉnh dữ liệu chứa nhằm thực hiện
giấu tin. Các bước của thuật toán như sau:
- Chia dữ liệu âm thanh thành các đoạn (frame) Si có cùng kích thước n.
- Thực hiện giấu từng bit trên mỗi đoạn Si. Công thức điều chỉnh để giấu như
sau:
𝑆𝑖′(𝑛) = [ 0.99 ∗ 𝑆𝑖(𝑛) 𝑛ế𝑢 𝑛ℎư 𝑔𝑖ấ𝑢 𝑏𝑖𝑡 0
0.98 ∗ 𝑆𝑖(𝑛) + 0.1 ∗ 𝑆𝑖(𝑛 − 𝑑) 𝑛ế𝑢 𝑛ℎư 𝑔𝑖ấ𝑢 𝑏𝑖𝑡 1 (3.6)
Để giải tin mật giấu trong tệp âm thanh cần phải có tệp âm thanh gốc. Việc giải
tin được thực hiện bằng cách so sánh từng đoạn giữa dữ liệu gốc và dữ liệu mang tin
để xác định tách bit 0 hoặc bit 1.
Có hai hạn chế trong kỹ thuật đề xuất bởi [16]. Trong công thức (3.6) nếu giá
trị của 𝑆𝑖(𝑛) bằng với giá trị của 𝑆𝑖(𝑛 − 𝑑) thì tổng 0.98 ∗ 𝑆𝑖(𝑛) + 0.1 ∗ 𝑆𝑖(𝑛 − 𝑑)
se bằng 0.99 ∗ 𝑆𝑖(𝑛), tương ứng với trường hợp giấu bit 0. Mặc dù khả năng này ít
xảy ra nhưng cũng có thể có, dẫn đến khi rút trích tin ta se lấy lại tin không đúng.
Ngoài ra, ta có thể giảm thời gian tính toán bằng cách chép nguyên nội dung đoạn khi
giấu bit 0 mà không phải thực hiện tính toán.
Để trích dữ liệu mật được giấu bằng phương pháp tiếng vọng, người ta dựa vào
phân tích cepstrum của mỗi đoạn. Cepstrum của mỗi đoạn 𝑆𝑖 được tính như sau:
73
𝐶𝑒𝑝𝑠 = 𝑅𝑒( 𝐼𝐹 (ln(|𝐹(𝑆𝑖)|))) (3.7)
Trong công thức trên F() ký hiệu phép biến đổi Fourier và IF() là phép biến đổi
Fourier ngược, Re() là lấy phần thực của số phức.
Ví dụ S1 là tín hiệu sin gồm 200 mẫu được sinh như sau:
Fs = 100; t = 0:1/Fs:2.00; S1 = sin(2*pi*45*t);
Ta thêm echo cho S1 tại vị trí 80 và lưu vào S2.
S2 = S1 + 0.5*[zeros(1,80) S1(1:121)];
Hình 3.29. Biên đô của âm thanh gôc và âm thanh được thêm echo
Hình 3.29 minh hoạ cho tín hiệu gốc và tín hiệu có thêm tiếng vọng. Khi phân
tích cepstrum của S2 ta dễ dàng phát hiện echo được thêm vào ở vị trí 80.
Hình 3.30. Cepstrum của âm thanh gôc và âm thanh được thêm tiếng vọng.
74
Bị phát hiện khi phân tích cepstrum là điểm hạn chế của phương pháp giấu tin
sử dụng phương pháp điều chỉnh tiếng vọng. Khi người thám tin biết kích thước mỗi
frame dùng để giấu, bằng cách phân tích cepstrum, người thám tin có thể dò tìm được
hoặc suy đoán một phần thông tin của tin giấu [57].
3.5.2. Kỹ thuật điều chỉnh tiếng vọng
Kỹ thuật đề xuất dưới đây khắc phục một phần nhược điểm của phương pháp
ở trên. Bằng cách dựa vào các giá trị được sinh từ khoá và điều chỉnh công thức thêm
tiếng vọng vào dữ liệu gốc, kỹ thuật đề xuất se hạn chế khả năng người thám tin dò
tìm được tin giấu và tránh trường hợp rút trích tin không đúng.
3.5.2.1. Thêm tiếng vọng dựa vào số ngẫu nhiên
Để giấu chuỗi bit M có độ dài n ta cần sinh chuỗi R ngẫu nhiên có độ dài n,
trong đó Ri chỉ nhận giá trị 0 hoặc 1. Mỗi một bit mật Mi se được giấu vào trong một
đoạn. Dựa vào giá trị Ri này ta se giữ nguyên đoạn hoặc thêm tiếng vọng vào đoạn.
Cụ thể như sau:
(3.8)
Chuỗi R được tính như sau:
(3.9)
Với xi là giá trị được sinh ra theo bộ sinh số đồng dư như sau:
xi = (axi-1 + b) mod N (3.10)
Để thêm tiếng vọng vào trong đoạn, ta sử dụng công thức (3.11) như sau:
𝑆𝑖′(𝑛) = [ 1.1 ∗ 𝑆𝑖(𝑛) 𝑛ế𝑢 𝑆𝑖(𝑛) = 𝑆𝑖(𝑛 − 𝑑)
0.99 ∗ 𝑆𝑖(𝑛) + 0.1 ∗ 𝑆𝑖(𝑛 − 𝑑) 𝑛ế𝑢 𝑆𝑖(𝑛) <> 𝑆𝑖(𝑛 − 𝑑) (3.11)
Công thức điều chỉnh này tránh được trường hợp rút trích tin sai do có xử lý cho
đoạn có giá trị trùng nhau.
=1: copy để giấu bit 1, thêm tiếng vọng để giấu bit 0.
=0: copy để giấu bit 0, thêm tiếng vọng để giấu bit 1. Nếu Ri
1 : nếu (xi mod 6) >2
0 : nếu (xi mod 6) <=2 Ri =
75
3.5.2.2. Thuật toán giấu
Đầu vào: - Tệp âm thanh gốc C, chuỗi bit W có độ dài L, khoá (a, b) và số N.
Đầu ra: - Tệp chứa tin giấu S.
Các bước của thuật toán giấu như sau:
Bước 1) Sinh ra chuỗi R dựa vào khoá theo công thức (3.9), (3.10).
Bước 2) Chia dữ liệu trên tệp gốc C thành các đoạn (frame) Ci có kích thước
bằng nhau. Nếu số frame < độ dài chuỗi bit (L) cần giấu thì dừng.
Bước 3) Gán giá trị các đoạn Si bằng Ci
Dựa vào giá trị của Ri và giá trị bit cần giấu Wi, dùng công thức (3.11) để thêm
tiếng vọng vào cho các đoạn Si.
Bước 4) Ghi các đoạn Si ra tệp S và chép các mẫu còn lại từ C sang S.
3.5.2.3. Thuật toán giải tin
Đầu vào: - Tệp chứa tin giấu S, tệp gốc C.
- Khoá (a, b) và số nguyên N, số bit cần lấy L.
Đầu ra: - Chuỗi bit W có độ dài L.
Bước 1) Sinh ra chuỗi R dựa vào khoá theo công thức (3.9), (3.10).
Bước 2) Chia dữ liệu tệp chứa tin giấu S và tệp gốc C thành các đoạn (frame)
Si, Ci có kích thước bằng nhau.
Bước 3) So sánh cepstrum của đoạn Ci với Si và dựa vào giá trị của Ri để trích
bit 0 hoặc bit 1.
Lặp lại bước 3 tuần tự cho các đoạn dữ liệu Ci, Si cho đến khi lấy đủ L bit.
Kích thước mỗi đoạn được sử dụng trong giấu tin và giải tin phải giống nhau. Để đảm
bảo kỹ thuật giấu không tạo ra sự khác biệt giữa tệp gốc và tệp mang tin thì thời gian
gây hiệu ứng tiếng không nên lớn hơn 20 mili giây, từ đó se có cách chọn số mẫu trong
mỗi đoạn cho phù hợp.
3.5.3. Kết quả thử nghiệm và đánh giá
Trong thử nghiệm, cặp số (7, 9137) được chọn làm số mồi cho bộ sinh số ngẫu
nhiên. Chuỗi dữ liệu giấu có độ dài gồm 3440 bit được lấy từ tệp dohoa.cpp. Chuỗi
76
số ngẫu nhiên R được sinh dựa vào công thức (3.9). Kết quả ta se có chuỗi R có giá
trị như sau: R = {1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0 , 1, 1, 0……}.
Hình 3.31. Phổ biên đô môt đoan của âm thanh trước và sau khi giấu
Tệp chứa được lấy mẫu ở tần số 44100, số bit lượng tử là 16, gồm 1422720
mẫu. Kích thước mỗi frame được chọn là 1000 và giá trị d1 được chọn bằng 441 tương
ứng dưới mức nhận biết tiếng vọng của hệ thống thính giác của con người. Hình 3.31
là một đoạn được thêm tiếng vọng để giấu tin. Kết quả đánh giá mức độ nhận biết cho
thấy kỹ thuật này không gây ra sự khác biệt nào khi nghe tệp âm thanh gốc và tệp âm
thanh mang tin.
Bảng 3.5 dưới đây thể hiện độ đo SNR khi thử nghiệm giấu 3 tệp dữ liệu vào
trong 2 tệp âm thanh khác nhau. Đối với tệp map.gif không thể giấu do kích thước lớn.
Bảng 3.6. Bảng gia tri SNR khi thêm tiếng vọng để giấu tin
Tên tệp chứa
Giá trị SNR
dohoa.cpp
(430 byte)
DuyTanlogo.bmp
(1694 byte)
map.gif
(14845 byte)
S.wav 30.54 27.17 Không giấu được
speech-in.wav 29.12 23.75 Không giấu được
77
Độ an toàn của lược đồ giấu phụ thuộc vào khóa sinh chuỗi R. Để giấu chuỗi
bit W có độ dài L ta cần phải có dãy R có cùng độ dài với W. Thuật toán để sinh chuỗi
R có độ phức tạp O(L). Chuỗi R được sinh dựa vào khoá bí mật giúp tăng độ mật cho
kỹ thuật. Nếu như người thám tin biết được kỹ thuật giấu dùng phương pháp điều
chỉnh tiếng vọng và kích thước của mỗi đoạn để giấu thông tin nhưng nếu không biết
chuỗi R thì cũng khó lấy lại được tin giấu. Nếu như biết cả số độ dài chuỗi bit là L thì
người thám tin cũng phải dò trong 2L chuỗi nhị phân để xác định được tin giấu.
Tổng kết chương 3
Trong chương 3 đã trình bày năm thuật toán giấu tin trong tệp âm thanh. Các
thuật toán này thực hiện điều chỉnh một bit của mẫu dữ liệu để giấu một hoặc nhiều
bit. Thuật toán 1 thực hiện giấu bằng cách kết hợp với mã Hamming nhằm mục đích
giảm nhận tin sai nếu tệp mang tin bị tấn công. Thuật toán 2 dùng chuỗi ngẫu nhiên
để chọn mẫu và bit của mẫu đó nhúng bit cần giấu vào, cách điều chỉnh bit để giảm
sai khác giữa mẫu dữ liệu gốc và mẫu dữ liệu mang tin. Thuật toán 3 và 4 sử dụng
hai phương pháp khác nhau để xáo trộn dữ liệu và dùng dãy liên tục các mẫu để giấu
tin. Việc giấu 1 bit vào dãy dựa vào đặc tính dữ liệu của dãy đó. Thuật toán 3 điều
chỉnh tối đa 4 bit để giấu 1 byte dữ liệu trong khi thuật toán 4 chỉ điều chỉnh 1 bit
giấu 1 byte dữ liệu. Thuật toán thứ 5 dùng phương pháp thêm tiếng vọng để giấu tin.
78
Chương 4. MỘT SỐ THUẬT TOÁN GIẤU TIN TRÊN MIỀN
BIẾN ĐỔI
Chương này của luận án se trình bày hai thuật toán giấu tin trong âm thanh
trên miền biến đổi. Hai thuật toán này được công bố trong hai bài báo số 5 và số 7
trong danh mục các công trình. Thuật toán thứ nhất dùng phương pháp lượng tử hoá
để điều chỉnh giá trị trên miền biến đổi Fourier và thuật toán thứ hai điều chỉnh giá
trị trung bình các thành phần chi tiết của đoạn sau khi biến đổi wavelet. Hai thuật
toán này giải quyết một phần vấn đề tệp âm thanh mang tin mật bị tấn công, làm thay
đổi tin giấu bên trong. Thuật toán giấu tin trên miền biến đổi Fourier có thể giấu tin
bền vững trước tấn công thêm nhiễu trắng khi tỉ lệ thêm nhiễu lớn hơn 90. Thuật toán
thứ hai có thể giấu tin bền vững với tấn công lấy lại mẫu ở mức bit thấp hơn và tấn
công thêm nhiễu trắng khi hệ số thêm nhiễu lớn hơn 15.
4.1. Thuật toán điều chỉnh các hệ số trên miền biến đổi Fourier
Trong phần này của luận án se trình bày kỹ thuật giấu tin dựa vào việc điều
chỉnh các hệ số trên miền tần số. Việc giấu các byte dữ liệu được thực hiện trên miền
tần số, bằng cách điều chỉnh giá trị các mẫu sao cho thoả mãn một tính chất xác định
trước, sử dụng phương pháp lượng tử. So với các phương pháp điều chỉnh trên miền
thời gian thì phương pháp này bền vững hơn trước một số tấn công.
4.1.1. Điều chỉnh giá trị trong miền tần số
Trong kỹ thuật này, mỗi đoạn dữ liệu âm thanh se được chuyển sang miền tần
số dùng phép biến đổi Fourier nhanh (Fast Fourier Transform). Mỗi một đoạn Y gồm
fw mẫu se được thực hiện phép biến đổi FFT.
FFT(Y)FY (4.1)
Kết quả FY nhận được là dãy gồm các số phức. Trừ trường hợp giá trị 0, mỗi
một số phức đều có thể biểu diễn dưới dạng lượng giác trong hệ toạ độ cực [36]. Hình
4.1 là biểu diễn số phức 𝑧 = 𝑥 + 𝑖 ∗ 𝑦 trong hệ toạ độ cực, trong đó trục Re tương
ứng với phần thực và trục Im tương ứng với phần ảo.
79
Hình 4.1. Biểu diễn sô phức trong hệ toa đô cực
Số phức 𝑧 = 𝑥 + 𝑖 ∗ 𝑦 có thể biểu diễn lại trong hệ toạ độ cực bằng công thức
sau :
)sin(cos irz (4.2)
Trị tuyệt đối (magnitude) của số phức được xác định như sau :
22)( yxzabsr (4.3)
argument hay pha của số phức z được xác định theo công thức (4.4).
0) yand 0if(xkxd
0) yand 0if(x2
π
0) yand 0if(x2
π
0) yand 0if(xπ)x
yarctan(
0) yand 0if(xπ)x
yarctan(
0)if(x)x
yarctan(
(4.4)
Một số mẫu trong dãy FY se được lựa chọn và điều chỉnh để giấu tin. Nếu ta
thay đổi độ lớn (magnitude) r của một số phức z thành r’ thì giá trị x, y cũng thay đổi
theo. Giá trị x’ và y’ được xác định theo công thức (4.5) và giá trị mới của z được xác
định theo công thức (4.6).
sin''
cos''
ry
rx
(4.5)
sin'*cos'' rirz (4.6)
Đoạn FY sau khi điều chỉnh se được biến đổi Fourier ngược (IFFT) để chuyển
từ miền tần số sang miền thời gian.
80
4.1.2. Thuật toán điều chỉnh mẫu để giấu một bit
Dưới đây là thuật toán dùng để điều chỉnh giá trị của một mẫu, là số phức z,
để giấu 1 bit b theo bước điều chỉnh d.
Đầu vào: - Số phức z, bit thông tin mật cần giấu b, giá trị d.
Đầu ra: - Số phức z’.
Phương pháp: Dieuchinh(z, b, d)
Bước 1) Tính biên độ (amplitude) và pha của z:
amp = abs(z); phase= angle(z);
Bước 2) Điều chỉnh giá trị số phức z để giấu bit b:
Nếu b=1
Nếu mod (amp, d) < d/2 thì amp = amp + d/2;
Ngược lại
Nếu mod (amp, d)> =d/2 thì amp = amp + d/2;
Bước 3) Tạo số phức mới z’ và trả về:
r’=complex(amp*cos(phase),amp*sin(phase));
return r’;
Trong thuật toán trên, hàm mod(amp, d) là hàm tính phần dư của phép chia
của amp cho d. Mục đích của việc cộng thêm khoảng d/2 là để điều chỉnh biên độ của
mẫu ở miền biến đổi thoả mãn tính chất chứa tin. Hình 4.2 minh hoạ cho cách điều
chỉnh giá trị mẫu để giấu một bit.
Hình 4.2. Điều chỉnh gia tri để giấu 1 bit
Số phức z được chọn để điều chỉnh phục vụ giấu tin phải đảm bảo giá trị phải
lớn hơn một ngưỡng nào đó. Để giảm ít sự thay đổi giá trị của mẫu trước và sau khi
giấu, giá trị d được chọn phải đủ nhỏ, thường trong khoảng 0.1 đến 0.4.
vùng điều chỉnh
giấu bit 0
vùng điều chỉnh
giấu bit 1
d/2
81
4.1.3. Thuật toán giấu
Đầu vào: - Vector Y chứa giá trị các mẫu, chuỗi bit M có độ dài q, giá trị d, k, fw.
Đầu ra: - Vector Y’ mang tin.
Thuật toán giấu gồm các bước sau:
Bước 1) Chia Y thành các đoạn có kích thước bằng nhau, chứa fw (frame
width) mẫu trên mỗi đoạn. Thực hiện phép biến đổi FFT trên mỗi đoạn để chuyển từ
miền thời gian sang miền tần số.
FYk = FFT (Yk).
Bước 3) Đối với mỗi đoạn FYk, tính biên độ và kiểm tra xem đoạn có thoả
điều kiện để giấu các bit không. Điều kiện đoạn được chọn để giấu tin là trong đoạn
có số mẫu có biên độ là đỉnh (peak) lớn hơn hoặc bằng 8 và biên độ phải lớn hơn giá
trị k (ngưỡng chọn). Nếu thoã mãn điều kiện giấu thì giấu lần lượt 8 bit tin mật vào
trong đoạn 8 phần tử đầu tiên là đỉnh của đoạn, dùng kỹ thuật điều chỉnh ở mục 4.1.2
Bước 4) Thực hiện IFFT trên mỗi đoạn FY để chuyển FY từ miền tần số về lại
miền thời gian lưu vào Y’
Bước 5) Trả về Y’.
Để thuận tiện cho việc tính FFT, kích thước của mỗi đoạn thường được chọn
ở dạng 2n, chẳng hạn như 256 hay 512.
Ngoài ra, nếu giá trị ngưỡng chọn k lớn thì se có rất ít đoạn có thể thỏa được
điều kiện giấu (có 8 phần tử lớn hơn 2 phần tử kề bên). Giá trị này thường được chọn
đủ nhỏ để có nhiều đoạn thỏa tiêu chí có thể giấu được.
Bảng 4.1 dưới đây minh hoạ cho việc điều chỉnh 8 mẫu là đỉnh trong đoạn để
giấu 8 bit tin mật. Các ô có giá trị in đậm ở cột thứ 3 tương ứng với việc phải điều
chỉnh giá trị của mẫu đế giấu tin, các ô có giá trị in bình thường tương ứng với giá trị
của mẫu đã thỏa mãn điều kiện giấu và ta không cần điều chỉnh.
82
Bảng 4.1. Gia tri cac mẫu trước và sau khi giấu cac bit
Giá trị trước khi điều chỉnh Bit giấu Giá trị sau khi điều chỉnh
7.774503 0 7.874503
11.513642 1 11.513642
6.869382 0 6.869382
7.337803 1 7.337803
6.913936 0 7.013936
6.913936 1 6.913936
7.337803 0 7.437803
6.869382 1 6.969382
4.1.4. Thuật toán lấy 1 bit mật từ 1 mẫu
Dưới đây là thuật toán lấy 1 bit từ số phức z, dùng để lấy bit tin Mi khi giải tin.
Đầu vào: - Số phức z, số d.
Đầu ra: - Số nhị phân Mi.
Phương pháp: Getbit (z)
Bước 1) Tính biên độ (amplitude) của z:
amp = abs(z);
Bước 2) Lấy bit Mi dựa vào Ri
Nếu mod (amp,d)>d/2 thì Mi =1, ngược lại Mi =0
Bước 3) return Mi
4.1.5. Thuật toán giải tin
Đầu vào: - Vector Y’ mang tin, độ dài chuỗi bit cần lấy q, số d, k, fw.
Đầu ra: - Chuỗi bit mật M.
Thuật toán giải tin gồm các bước sau đây :
Bước 1) Chia Y’ thành các đoạn có cùng số kích thước fw.
Bước 2) Thực hiện FFT trên các đoạn Y’i để chuyển sang miền tần số:
FY’i = FFT (Y’i).
Tính biên độ cho đoạn và gán số bit đã nhận được h=0;
83
Bước 3) Đối với mỗi đoạn FY’i, kiểm tra đoạn có chứa tin hay không dựa vào
việc đếm số đỉnh lớn hơn ngưỡng chọn k. Nếu đoạn có chứa tin thì chọn 8 đỉnh đầu
tiên trong đoạn để rút trích tin.
M(h) = Getbit( FYk(i), d ); h=h+1; Nếu h>1 thì sang Bước 4;
Xét các đoạn FY’i kế tiếp.
Bước 4) return M.
Do trong thuật toán giấu, ta chỉ thực hiện điều chỉnh giá trị các mẫu là đỉnh
(lớn hơn hai phần tử bên cạnh) lên một khoảng dương để giấu tin nên nó vẫn duy trì
tính chất là đỉnh sau khi được điều chỉnh (trong trường hợp không điều chỉnh thì
không ảnh hưởng tính chất này). Mặt khác, ta có IFFT(FFT(Y)) = Y nên tính chất các
phần tử là đỉnh được lựa chọn trong mỗi đoạn để giấu tin cũng không thay đổi, nên
ta có thể xác định được các bit mật được giấu từ các mẫu là đỉnh này.
4.1.6. Kết quả thử nghiệm và đánh giá
Trong thử nghiệm đánh giá kỹ thuật, tệp âm thanh được chọn có độ dài 32
giây, lấy mẫu ở tần số 44.1 Khz, gồm 1422720. Chuỗi bit mật gồm 1024 bit, là dữ
liệu ảnh của logo Đại học Duy Tân. Kích thước mỗi đoạn fw là 512, giá trị ngưỡng
chọn là 6 và giá trị d là 0.2. Kết quả thử nghiệm cho thấy không phân biệt được khi
nghe tệp âm thanh gốc và tệp âm thanh mang tin.
Hình 4.3 minh hoạ một đoạn của tệp mang tin gồm 512 mẫu, đã đươc điều
chỉnh để giấu 1 bit tin.
Hình 4.3. Biên đô đoan đầu tiên của tệp mang tin B
84
Hình 4.4 thể hiện dữ liệu tệp gốc và tệp mang tin.
Hình 4.4. Biên đô của tệp gôc và tệp mang tin
Thực nghiệm thực hiện thêm nhiễu trắng với các tỉ lệ khác vào dữ liệu mang
tin. Bảng 4.2 là mô tả tỉ lệ bit bị sai khi giải tin và hình 4.5 là ảnh nhận được. Nếu tỉ
lệ gây nhiễu lớn hơn 90 thì không ảnh hưởng đến tin giấu.
Bảng 4.2. Tỉ lệ bit sai khi tấn công thêm nhiễu
Tỉ lệ gây nhiễu Số bit nhận sai Tỉ lệ nhận sai
35 310 0.302734375
40 189 0.184570313
50 46 0.044921875
70 40 0.0390625
80 1 0.000976563
>=90 0 0
Hình 4.5. Ảnh kết quả thu được khi giải tin tương ứng với cac tỉ lệ gây nhiễu
A B
A B
hệ số nhiễu 35 hệ số nhiễu 40 hệ số nhiễu 50
hệ số nhiễu 70 hệ số nhiễu >=90 hệ số nhiễu 80
85
Bảng 4.3 thể hiện độ đo SNR khi thực nghiệm giấu 3 tệp khác nhau vào hai
tệp âm thanh, theo thuật toán đề xuất ở trên. Tệp map.gif không thể giấu được vào
các tệp được do kích thước lớn.
Bảng 4.3. Bảng gia tri SNR khi điều chỉnh biên đô để giấu tin
Tên tệp chứa
Giá trị SNR
dohoa.cpp
(430 byte)
DuyTanlogo.bmp
(190 byte)
map.gif
(14845 byte)
S.wav 80.41 76.73 Không giấu được
speech-in.wav 76.35 72.27 Không giấu được
Kỹ thuật này giấu 8 bit trên đoạn gồm fw mẫu dữ liệu. Để giấu n byte dữ liệu
thì tệp chứa cần ít nhất n*fw mẫu. Có trường hợp trong một đoạn không thể giấu tin
do không có đủ số mẫu thỏa tiêu chí giấu. Chúng ta có thể điều chỉnh số bit giấu trong
mỗi đoạn tăng hoặc bằng số mẫu là đỉnh trong mỗi đoạn. Giá trị ngưỡng được chọn
không nên lớn vì số mẫu trong đoạn thoả điều kiện lớn hơn ngưỡng chọn không nhiều
và tuỳ thuộc vào tệp âm thanh được chọn làm dữ liệu chứa.
Độ an toàn của lược đồ giấu phụ thuộc vào giá trị là d và k, trong đó d là giá
trị dùng để điều chỉnh mẫu thỏa điều kiện giấu và k là giá trị ngưỡng để chọn các mẫu
trong mỗi khối. Để tăng tính an toàn cho tin giấu, ta có thể kết hợp với chuỗi ngẫu
nhiên như các kỹ thuật đã trình bày trước. Ngoài ra, ta có thể chọn giá trị d khác nhau
trong các đoạn khác nhau để giấu tin, làm cho người thám tin khó lấy lại được tin.
Nếu chọn kích thước mỗi đoạn là 512, để giấu 1 byte dữ liệu, ta cần phải thực
hiện 2*512*log2(512) và bằng 9216 phép toán để thực hiện biến đổi (FFT và IFFT).
Để giấu n byte dữ liệu thì ta cần ít nhất n*9216 phép toán.
Các nghiên cứu trong [49, 50, 51] cũng thực hiện giấu tin trên miền tần số, sử
dụng phép biến đổi FFT. Các nghiên cứu này sử dụng phương pháp nội suy, dùng kết
hợp với dãy số Fibonacci để giấu tin. Các thuật toán giấu này có tỉ lệ dữ liệu cao và
bền vững trước các tấn công thông thường. Nghiên cứu [31, 40, 41] thực hiện tính
cepstrum và giấu dữ liệu trực tiếp trên miền này, nhưng thực chất vẫn là các thuật toán
dùng biến đổi FFT để giấu tin.
86
4.2. Thuật toán giấu điều chỉnh hệ số biến đổi wavelet
Trong phần này, luận án đề xuất sử dụng phương pháp lượng tử hoá giá trị
trung bình các hệ số của phép biến đổi wavelet để giấu tin. Dữ liệu tệp âm thanh se
được chuyển từ miền thời gian sang miền tần số bằng biến đổi wavelet, sau đó se thực
hiện giấu tin và chuyển ngược lại miền thời gian. Trong phương pháp này sử dụng
khóa là bộ gồm ba số (x0, a, m) cho quá trình giấu tin và giải tin. Các giá trị của khóa
dùng để sinh chuỗi số ngẫu nhiên theo phương pháp đồng dư tuyến tính đã trình bày
ở chương 2, với giá trị c= 2*a. Từ chuỗi số ngẫu nhiên được sinh ra, chúng ta se biến
đổi chuỗi bit mật cần giấu thành chuỗi khác. Mục đích của việc biến đổi này là làm
cho người thám tin khó lấy lại được tin giấu nếu như biết thuật toán điều chỉnh đoạn
dữ liệu để giấu bit.
Như ta đã biết, phép biến đổi wavelet se phân tích tín hiệu thành hai thành
phần là thành phần xấp xỉ A (Approximation) và thành phần chi tiết D (Detail). Thành
phần xấp xỉ A tương ứng với thành phần tần số thấp và thành phần chi tiết D tương
ứng với thành phần tần số cao. Trong hai thành phần A và D, thành phần D là không
quan trọng và những thay đổi trên thành phần này ít ảnh hưởng đến tín hiệu âm thanh
gốc khi ta khôi phục lại. Dựa vào đặc tính này, luận án đề xuất cách điều chỉnh các
giá trị trên thành phần này để giấu tin, bằng cách lượng tử theo modulo. Thuật toán
giấu tin thực hiện lượng tử giá trị trung bình của các mẫu trong một đoạn. Mỗi một
bit se được giấu vào đoạn gồm fw mẫu, được đánh số từ 1 đến fw.
Do thuật toán giấu và trích bit chia mỗi đoạn gồm fw phần tử thành hai nửa
bằng nhau nên giá trị fw được chọn trong thuật toán là số chẵn. Một nửa các mẫu
thành phần D của mỗi đoạn, se được điều chỉnh lên một khoảng d/2 để giấu tin nếu
như không thỏa điều kiện giấu, nên giá trị số thực d khi chọn cần đủ nhỏ để ít làm
thay đổi dữ liệu mang tin so với dữ liệu gốc.
4.2.1. Thuật toán giấu 1 bit
Đầu vào: - Dãy D gồm fw phần tử D[1..fw], bit cần giấu b, số thực d.
Đầu ra: - Dãy D đã được điều chỉnh để chứa bit mật b.
Bước 1) Tính giá trị trung bình của nửa đoạn trước và nửa đoạn sau của D.
87
ℎ1 = (∑ 𝐷[𝑖])/(𝑓𝑤/2)𝑓𝑤
21 (4.7)
ℎ2 = (∑ 𝐷[𝑖]𝑓𝑤𝑓𝑤
2+1
)/(𝑓𝑤
2)
Bước 2) Tính giá trị lệch giá trị trung bình giữa hai đoạn, theo modulo d:
𝑘 = 𝑎𝑏𝑠(ℎ1 − ℎ2) 𝑚𝑜𝑑 𝑑
Bước 3) Điều chỉnh giá trị để giấu bit b :
Nếu b=1 và k> d/2 hoặc b=0 và k<= d/2 thì đã thỏa điều kiện giấu, không
cần điều chỉnh;
Ngược lại:
+Nếu b=1 và k<= d/2 thì cộng d/2 cho nửa đoạn trước :
D[i] = D[i] + d/2, với i= 1 đến fw/2.
+Ngược lại nếu b=0 và k> d/2 thì cộng d/2 cho nửa đoạn sau :
D[i] = D[i] + d/2, với i từ fw/2 +1 đến fw.
Trong thuật toán giấu, ta qui ước một đoạn đã thỏa điều kiện đã mang tin nếu
như độ lệch trung bình hai nửa lớn hơn d/2 khi cần giấu bit 1 và độ lệch trung bình
hai nửa nhỏ hơn hoặc bằng d/2 khi cần giấu bit 0.
4.2.2. Thuật toán trích 1 bit trong đoạn
Đầu vào: - Dãy D gồm fw phần tử D[1..fw], số thực d.
Đầu ra: - Bit mật b.
Bước 1) Tính giá trị trung bình của nửa đoạn trước ℎ1và nửa đoạn sau ℎ2 của
D theo công thức (4.7)
Bước 2) Tính giá trị lệch giá trị trung bình giữa hai đoạn, theo modulo d:
𝑘 = 𝑎𝑏𝑠(ℎ1 − ℎ2) 𝑚𝑜𝑑 𝑑
Bước 3) Trích bit b : Nếu k> d/2 thì b =1 ngược lại b = 0.
4.2.3. Thuật toán giấu tin
Dưới đây là thuật toán giấu chuỗi bit mật M gồm n phần tử và tệp âm thanh H.
Đầu vào: - Khoá K, tệp âm thanh gốc H, chuỗi bit mật M.
Đầu ra: - Tệp âm thanh S mang tin.
88
Bước 1) Dùng khoá K để sinh ra chuỗi số ngẫu nhiên SR gồm n phần tử.
Bước 2) Biến đổi chuỗi bit mật M thành M’ dựa vào SR, trong đó:
𝑀′(𝑖) = [𝑀(𝑖) 𝑛ế𝑢 S𝑅(𝑖) 𝑙ẻ
1 − 𝑀(𝑖) 𝑛ế𝑢 S𝑅(𝑖) 𝑐ℎẵ𝑛 (4.8)
Bước 3) Đọc dữ liệu các mẫu từ tệp H vào mảng y. Thực hiện biến đổi wavelet
cho dãy y.
[𝐴, 𝐷] = 𝐷𝑊𝑇(𝑦)
Bước 4) Chia dãy D thành các đoạn 𝐷𝑖 có cùng kích thước fw và điều chỉnh
các đoạn giấu lần lượt từng phần tử 𝑀′(𝑖) vào các đoạn 𝐷𝑖, ta được 𝐷𝑖′.
Bước 5) Biến đổi wavelet ngược [A, D’] để có được y’ và ghi y’ ra tệp S.
4.2.4. Thuật toán trích tin
Đầu vào: - Khoá K, tệp mang tin S.
Đầu ra : - Chuỗi bit mật M.
Bước 1) Đọc dữ liệu các mẫu từ tệp âm thanh S vào mảng y. Thực hiện biến
đổi wavelet cho dãy y.
[𝐴, 𝐷] = 𝐷𝑊𝑇(𝑦)
Bước 2) Chia dãy D thành các đoạn 𝐷𝑖 có cùng kích thước fw và lấy lần lượt
từng phần tử 𝑀′(𝑖) từ các đoạn 𝐷𝑖 theo thuật toán trích bit.
Bước 3) Dùng khoá K để sinh ra chuỗi ngẫu nhiên SR gồm n phần tử.
Bước 4) Biến đổi chuỗi M’ thành M dựa vào SR theo công thức 4.8 và trả về.
Để rút trích đúng tin giấu thì kích thước fw dùng trong thuật toán giấu và giải
tin phải giống nhau. Do biến đổi IDWT(DWT(y)) =Y nên độ lệch trung bình của hai
nửa trong mỗi đoạn gồm fw mẫu vẫn duy trì nên ta có thể lấy chính xác tin đã giấu.
4.2.5. Kết quả thực nghiệm và đánh giá
Phần thực nghiệm thực hiện giấu tin trên các tệp âm thanh mono lượng tử 16
bit, ở nhiều thể loại khác nhau. Độ dài các chuỗi bit được giấu được thử nghiệm tuỳ
thuộc vào tệp âm thanh chứa. Giá trị d được chọn là 0.1 và kích thước mỗi đoạn để
89
giấu 1 bit là 200. Hình 4.6 minh hoạ cho giấu 2000 bit vào trong tệp âm thanh, là bản
hoà tấu nhiều nhạc cụ.
Hình 4.6. Âm thanh gôc và âm thanh chứa tin giấu
Bảng 4.3 thể hiện độ đo SNR khi tiến hành giấu các chuỗi bit vào các tệp âm
thanh. Các giá trị của hệ số SNR trong Bảng 4.2 chứng tỏ kỹ thuật đề xuất đạt được
tiêu chuẩn về tỉ lệ nhiễu khi giấu tin. Thuật toán đề xuất cũng cho phép rút trích tin
giấu chính xác nếu như tệp âm thanh chứa tin mật không bị các tấn công.
Bảng 4.4. Bảng gia tri SNR và NCC khi giấu tin
Tên tệp Dạng âm
thanh
Kích thước
tệp
Số bit
giấu SNR
S.wav Bài nói 6.5 Mb 2000 22.18
Testmono44100Hz16bit_PCM.wav Đoạn nhạc 1.14 Mb 1400 21.67
PCM1608.wav Tiếng cười 104 Kb 100 25.74
speech-in.wav Thông báo 2.71 Mb 2000 20.55
Kết quả thử nghiệm giảm số bit lượng tử từ 16 bit xuống 8 bit đối với tệp âm
thanh chứa tin giấu cho thấy không ảnh hưởng đến tin mật khi giải tin.
Để kiểm tra tính bền vững của kỹ thuật đề xuất, chúng tôi thực hiện thêm nhiễu
vào tệp mang tin. Ba loại nhiễu lần lượt được thử nghiệm là nhiễu trắng, nhiễu hạt
tiêu và nhiễu đốm. Kết quả thực nghiệm cho thấy kỹ thuật đề xuất bền vững với tấn
công thêm nhiễu trắng (White Gaussian Noise) khi hệ số gây nhiễu lớn hơn 15. Đối
với một tệp âm thanh, nếu như thêm nhiễu trắng với hệ số thêm nhiễu nhỏ hơn 10, se
90
làm thay đổi rõ rệt tệp âm thanh ban đầu và dễ dàng phát hiện ra sự thay đổi khi nghe
bằng tai. Các kết quả thử nghiệm khi thêm nhiễu trắng thể hiện trong Bảng 4.5.
Bảng 4.5. Bảng gia tri NCC khi thêm nhiễu trắng
Tên tệp
Độ tương quan giữa chuỗi giấu và nhận (NCC)
SNR= 7 SNR= 10 SNR>=15
S_1.wav 0.9989 1 1
Testmono44100Hz16bit_PCM_1.wav 0.9148 0.9987 1
PCM1608_1.wav 0.7648 0.9202 1
speech-in_1.wav 0.9950 1 1
Đối với tấn công thêm nhiễu hạt tiêu (pepper) và nhiễu đốm (speckle), tin giấu
trong dữ liệu mang không bền vững. Dữ liệu ảnh gồm 1444 bit như hình 4.7 (a) được
giấu vào tệp âm thanh S_1.wav. Hình 4.7 (b) và 4.7 (c) lần lượt là ảnh kết quả rút
trích từ tệp âm thanh sau khi thực hiện thêm nhiễu hạt tiêu với hệ số d= 0.001 và
nhiễu đốm với hệ số v=0.001. Các thông số cụ thể khác được thể hiện trong Bảng 4.6.
Hình 4.7. Ảnh được giấu và ảnh thu được khi chiu cac tấn công thêm nhiễu
Bảng 4.6. Bảng gia tri NCC khi thêm nhiễu hat tiêu và nhiễu đôm
Thêm nhiễu hạt tiêu Thêm nhiễu đốm
Số bit sai khác 383 389
NCC 0.56568 0.55967
Độ an toàn của sơ đồ giấu phụ thuộc vào khóa K, dùng để sinh chuỗi ngẫu
nhiên. Từ chuỗi ngẫu nhiên này ta se xác định được các bit cần lấy là 0 hay 1. Nếu
không có chuỗi ngẫu nhiên này, người thám tin se không biết được là lấy bit nào dù
(a) (b) (c)
91
biết cách trích tin ra từ tệp âm thanh. Ngoài ra ta có thể điều chỉnh chiều dài của mỗi
đoạn fw và giá trị của ngưỡng d để tăng độ mật cho kỹ thuật giấu.
Kỹ thuật đề xuất hướng đến mục tiêu dùng để giấu tin mật nên chọn miền điều
chỉnh ít ảnh hưởng đến nội dung tệp dữ liệu chứa, là vùng tần số cao.
Các nghiên cứu về giấu tin dựa trên phép biến đổi wavelet hiện đang được
nghiên cứu nhiều. Trong [24, 29, 63, 64] trình bày các thuật toán giấu khác nhau dựa
trên biến đổi này, đặc biệt [64] trình bày thuật toán liên quan đến dữ liệu chứa dạng
bài nói (speech).
Tổng kết chương 4
Chương 4 trình hai thuật toán giấu tin trong âm thanh được thực hiện trên miền
tần số. Thuật toán thứ nhất dùng phương pháp điều chỉnh biên độ các hệ số FFT trên
mỗi đoạn để giấu 8 bit dữ liệu. Thuật toán này có thể giải tin không cần dữ liệu gốc
và tin giấu có thể bền vững nếu thêm nhiễu trắng với tỉ lệ >90 lên dữ liệu chứa. Thuật
toán thứ hai thực hiện điều chỉnh các hệ số của phép biến đổi wavelet để giấu tin. So
với thuật toán thứ nhất, thuật toán thứ hai có thể bền vững trước kiểu tấn công giảm
số bit biểu diễn mẫu và tin giấu bền vững với thêm nhiễu trắng nếu như tỉ lệ thêm
nhiễu lớn hơn 15 như trong các bảng kết quả thử nghiệm đã trình bày.
92
KẾT LUẬN
Giấu thông tin và các ứng dụng của nó là một trong những vấn đề được nhiều
người quan tâm hiện nay. Giấu thông tin được coi là một trong các giải pháp để bảo
mật dữ liệu. Giấu tin trong âm thanh hiện nay vẫn còn nhiều hướng mở, nhất là các
nghiên cứu ứng dụng trong các hệ thời gian thực. Các nghiên cứu để tăng tính bền
vững, sự đồng bộ của tin giấu trong dữ liệu âm thanh đã có nhưng chưa nhiều.
Trên cơ sở nghiên cứu các kỹ thuật giấu tin trong âm thanh, các kỹ thuật bổ
trợ, luận án đã đề xuất một số cải tiến nhằm tăng cường tính mật, đưa ra các giải pháp
khác nhau có thể lựa chọn cho bài toán giấu tin trong âm thanh. Cụ thể, luận án đã
đạt được các kết quả chính sau:
Đề xuất phương pháp giấu tin trong âm thanh kết hợp với sử dụng mã phát
hiện và sửa lỗi. Mục đích của việc này là tránh trường hợp nhận thông tin sai
nếu tệp chứa bị tấn công làm thay đổi nội dung tin giấu.
Đề xuất cách chọn mẫu dữ liệu và vị trí bit của mẫu cần điều chỉnh để giấu
tin, dựa vào chuỗi ngẫu nhiên được sinh ra từ khoá bí mật. Trong kỹ thuật
này cũng đề xuất cách điều chỉnh các bit trong mỗi mẫu dữ liệu được chọn
để giấu sao cho sự sai khác giữa các mẫu dữ liệu trên tệp gốc và các mẫu trên
tệp chứa tin giấu là ít nhất.
Đề xuất các cách xáo trộn dữ liệu mật trước khi giấu tin. Mục đích của việc
này là làm cho người thám tin tốn nhiều thời gian để sắp xếp lại các bit mật
lấy được để có chuỗi tin mật nếu như người thám tin biết thuật toán giấu.
Đề xuất một cải tiến cho kỹ thuật giấu dựa vào tiếng vọng; áp dụng kỹ thuật
giấu tin trong dữ liệu đa phương tiện cho trường hợp cụ thể là dữ liệu âm
thanh, điều chỉnh 1 bit để giấu 1 byte dữ liệu trong khối 256 mẫu, điều chỉnh
4 bit để giấu 1 byte dữ liệu trong 2 khối, mỗi khối 25 mẫu.
Đề xuất hai cách giấu tin mật trên miền tần số bằng cách điều chỉnh các hệ
số của phép biến đổi. Một thuật toán sử dụng phép biến đổi Fourier và một
thuật toán sử dụng phép biến đổi wavelet.
93
Vấn đề có thể nghiên cứu tiếp theo:
Nghiên cứu nâng cao tính bền vững của tin giấu trước các tấn công để có thể
áp dụng trong đánh dấu bản quyền nhạc số.
Nghiên cứu các phương pháp đồng bộ kết hợp nhằm mục đích phát hiện ra
các đoạn để rút trích tin giấu.
Nghiên cứu các thuật toán giấu và rút trích nhanh để có thể áp dụng cho các
ứng dụng VoIP.
Nghiên cứu phát triển các ứng dụng kết hợp với các thiết bị phần cứng.
94
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC
CỦA TÁC GIA LIÊN QUAN ĐẾN LUẬN ÁN
1. Nguyễn Xuân Huy, Huỳnh Bá Diệu (2009), “Kỹ thuật giấu tin trong âm thanh
hỗ trợ xác thực”, Tap chi Khoa học Đai học Quôc gia Hà Nôi, Khoa học Tự
nhiên và Công nghệ 25, tr. 69-74.
2. Nguyễn Xuân Huy, Huỳnh Bá Diệu, Võ Thị Thanh (2013), “Một cải tiến cho
kỹ thuật giấu tin dựa vào LSB”, Tap chi Khoa học Đai học Quôc gia Hà Nôi,
Khoa học Tự nhiên và Công nghệ, Tập 29, Số 2, tr. 31-37.
3. Huynh Ba Dieu (2013), “An Improvement for Hiding Data in Audio Using
Echo Modulation”, Proceedings of the Second International Conference on
Informatics Engineering & Information Science (ICIEIS2013), pp. 133-138.
4. Huynh Ba Dieu, Nguyen Xuan Huy (2013), “Hiding Data In Audio Using
Modified CPT Scheme”, Proceedings of the Fifth International Conference
of Soft Computing and Pattern Recognition (SoCPaR2013), pp. 397-401.
5. Huynh Ba Dieu, Nguyen Xuan Huy (2014), “An Improved Technique for
Hiding Data in Audio”, Proceedings of the Fourth International Conference
on Digital Information and Communication Technology and its Applications
(DICTAP2014), pp. 149-153.
6. Nguyen Xuan Huy, Huynh Ba Dieu (2014), “An Efficient Method for Hiding
Data in Audio”, Proceedings of the Fifth International Conference on
Advanced Technologies (ATC’14), pp. 167-171.
7. Nguyễn Xuân Huy, Huỳnh Bá Diệu (2016), “Một kỹ thuật giấu tin trong âm
thanh dựa vào phép biến đổi wavelet”, Tap chi Khoa học và Công nghệ, Đai
học Đà Nẵng, Tập 98, Số 1, tr. 103-106.
95
TÀI LIÊU THAM KHAO
Tiếng Việt
1 Vũ Ba Đình (2007), Nghiên cứu xây dựng một số giải pháp đảm bảo an toàn
thông tin trong cơ sở dữ liệu không gian, Luận án tiến sỹ toán học, Viện
Công nghệ thông tin – Viện Hàn Lâm Khoa học và Công nghệ Việt Nam.
2 Nguyễn Ngọc Hà (2008) , Phát triển một số kỹ thuật giấu dữ liệu trong ảnh ứng
dụng trong trao đổi thông tin, Luận án tiến sỹ toán học, Viện Công nghệ
thông tin – Viện Hàn Lâm Khoa học và Công nghệ Việt Nam.
3 Lưu Thị Bích Hường (2014), Nghiên cứu và phát triển kỹ thuật thủy vân cơ sở
dữ liệu quan hệ, Luận án tiến sỹ toán học, Viện Công nghệ thông tin –
Viện Hàn Lâm Khoa học và Công nghệ Việt Nam.
4 Nguyễn Hải Thanh (2012), Nghiên cứu phát triển các thuật toán giấu tin trong
ảnh và ứng dụng trong mã đàn hồi, Luận án tiến sỹ toán học, Trường Đại
học Bách khoa Hà Nội.
5 Nguyễn văn Tảo (2008), Nghiên cứu một số kỹ thuật giấu tin và ứng dụng,
Luận án tiến sỹ toán học, Viện Công nghệ thông tin – Viện Hàn Lâm Khoa
học và Công nghệ Việt Nam.
Tiếng Anh
6 Akansu, Ali N. Haddad, Richard A. (1992), Multiresolution Signal
Decomposition: Transforms, Subbands, Wavelets, San Diego Academic
Press, pp. 391- 4422.
7 Alan V. Oppenheim and Ronald W. Schafer (2004), “From Frequency to
Quefrency: A History of the Cepstrum”, IEEE Signal Processing Magazine,
pp. 95- 106.
8 Ali Mohammad Al-Haj (2010), Advanced Techniques in Multimedia
Watermarking Image, Video and Audio Applications, Information Science
Reference (IGI Global).
9 Andreas Lang, Jana Dittmann, Ryan Spring and Claus Vielhauer (2005),
"Audio Watermark Attacks: From Single to Profile Attacks", Proceedings
of the 7th Workshop on Multimedia and Security, pp. 39-50.
10 Ansari R., Malik H. and Khokhar A. (2004), “Data-hiding in audio using
frequency-selective phase alteration”, Proceedings of IEEE International
Conference on Acoustics, Speech, and Signal Processing, pp. 389-392.
96
11 Asad M., Gilani J. and Khalid A (2011), "An enhanced least significant bit
modification technique for audio steganography", Proceedings of
International Conference on Computer Networks and Information
Technology, pp. 143 - 147.
12 Balgurgi P. P. and Jagtap S. K. (2012), "Intelligent processing: An approach of
audio steganography", Proceedings of International Conference on
Communication, Information & Computing Technology, pp.1 - 6.
13 Bender W., Gruhl D., Morimoto N., Lu A. (1996), “Techniques for data
hiding”, IBM Systems Journal, vol. 35, pp. 313- 336.
14 Bing Li and Jia-wei Xu (2005), “Period of Arnold transformation and its
application in image scrambling”, Journal of Central South University of
Technology, vol. 12 (1), pp. 278-282.
15 Charles Van Loan (1992), Computational Frameworks for the Fast Fourier
Transform, SIAM, pp. 121-187.
16 Chavez J.A. R., Ruiz C. A. and Sanchez S. A G. (2012), “Audio watermarking
of wav files by echo modulation”, Proceedings of CONIELECOMP, pp.
350-354.
17 Chen B., Wornell G. W., (1999), “Dither modulation: A new approach to digital
watermarking and information embedding”, Proceedings of the Security
and Watermarking of Multimedia Contents, vol. 3657, pp. 342-353.
18 Chen Y. Y., Part H. K. and Tseng Y. C. (2000), “A secure data hiding scheme
for two-color images”, Proceedings of Symp on Computers and
Communications, pp. 750-755.
19 Chun-Shien Lu (2005), Multimedia Security:Steganography and Digital
Watermarking Techniques for Protection of Intellectual Property, Idea
Group Publishing.
20 Cvejic N. (2004), Algorithms For Audio Watermarking And Steganography,
Phd Thesis, Oulu University Press.
21 Cvejic N. and Seppanen T. (2002), "Increasing the capacity of LSB-based audio
steganography", Proceedings of IEEE Workshop on Multimedia Signal
processing, pp. 336-338.
22 Cvejic N. and Seppanen T. (2005), "Increasing Robustness of LSB Audio
Steganography by Reduced Distortion LSB Coding", Journal of Universal
Computer Science, vol. 11 (1), pp. 56-65.
23 Cvejic N., Seppanen T. (2004), “Reduced distortion bit-modification for LSB
audio steganography”, Proceedings of International Conference on Signal
Processing, pp. 2318- 2321.
97
24 Deepthi S., Renuka A. and Natarajan M. (2013), "Data hiding in audio signals
using wavelet transform with enhanced security", Proceedings of ITCSE,
ICDIP, ICAIT, pp. 137 – 146.
25 Donald Knuth (1997), The Art of Computer Programming. vol. 2:
Seminumerical algorithms, Addison-Wesley, pp. 1-70.
26 Esmaili S., Krishnan S. and Raahemifar K. (2003), “A novel spread spectrum
audio watermarking scheme based on time - frequency characteristics”,
Proceedings of IEEE Conf. Electrical and Computer Engineering, vol. 3,
pp. 1963–1966.
27 Fallahpour M. and Megías D. (2014), “Fast and low-complexity audio
watermarking", Proceeding of First international workshop on mobile
internet, pp. 329- 335.
28 Gopalan K. and Qidong Shi (2010), "Audio Steganography Using Bit
Modification - A Tradeoff on Perceptibility and Data Robustness for Large
Payload Audio Embedding", Proceedings of 19th International Conference
on Computer Communications and Networks, pp. 1- 6.
29 Haider Ismael Shahadi, Razali Jidin and Wong Hung Way (2014), "Lossless
Audio Steganography based on Lifting Wavelet Transform and Dynamic
Stego Key", Indian Journal of Science and Technology, vol. 7(3), 323–334.
30 Heap, B. R. (1963). "Permutations by Interchanges", The Computer Journal,
vol. 6(3), pp. 293–294.
31 Hsieh C. T. and Tsou P. Y. (2002), “Blind cepstrum domain audio
watermarking based on time energy features”, Proceedings of 14th
International Conference on Digital Signal Processing, vol. 2, pp. 705-708.
32 Hyoung Joong Kim, Yong Hee Choi, JW Seok, JW Hong (2004), "Audio
Watermarking Techniques, Intelligent Watermarking Techniques", World
Scientific, pp. 185-218.
33 Ingemar J. Cox, Matthew L. Miller, Jeffrey A. Bloom, Jessica Fridrich, Ton
Kalker (2008), Digital Watermarking and Steganography, Morgan
Kaufmann Publishers.
34 Jayaram P., Ranganatha H. R. and Anupama H. S. (2011), "Information Hiding
Using Audio Steganography – A Survey", The International Journal of
Multimedia & Its Applications (IJMA), vol. 3(3), pp. 86-96.
35 Kamalpreet Kaur, Jagriti Bhatia, Hardeep Singh and Rajesh Kumar (2014),
"Multilevel Technique to Improve PSNR and MSE in Audio
Steganography", Proceeding of International Journal of Computer
Applications, vol. 103(5), pp. 1- 4.
98
36 Kasana, H.S. (2005), "Complex Variables: Theory And Applications (2nd
ed.)", Prentice Hall of India, p. 14-20
37 Kim H.J. and Choi Y.H. (2003), ”A novel echo hiding algorithm”, IEEE
Transactions on Circuits and Systems for Video Technology, vol. 13, pp.
885-889.
38 Ko B. S., Nishimura R. and Suzuki Y. (2005), "Time-Spread echo method for
digital audio watermarking", IEEE Transactions on Multimedia, vol. 7(2),
pp. 212-221.
39 Kotaro Yamamoto and Munetoshi Iwakiri (2010), "Real-Time Audio
Watermarking Based on Characteristics of PCM in Digital Instrument",
Journal of Information Hiding and Multimedia Signal Processing, vol. 1(2),
pp. 59 - 79.
40 Lee S. K. and Ho Y. S. (2000), “Digital audio watermarking in the cepstrum
domain”, IEEE Trans. Consumer Electronics, vol. 46, pp. 744-750.
41 Li X. and Yu H.H. (2000), “Transparent and robust audio data hiding in
cepstrum domain”, Proceedings of IEEE International Conference on
Multimedia and Expo, pp. 397 – 400.
42 Lie W. N., Chang L. C. (2005), “Multiple Watermarks for Stereo Audio Signals
Using Phase-Modulation Techniques”, IEEE Trans. Signal
Processing, vol. 53(2), pp. 806–815.
43 Lie, W.-N., and Chang, L.-C. (2001), “Robust and high-quality time-domain
audio watermarking subject to psychoacoustic masking”, Proceedings of
IEEE International Symposium on Circuits and Systems, vol. 2, pp. 45-48.
44 Lili Li, Jianling Hu, Xiangzhong Fang (2007), “Spread-Spectrum Audio
Watermark Robust Against Pitch-Scale Modification”, Proceedings of
IEEE International Conference on Multimedia and Expo, pp. 1770 - 1773.
45 Malik H, Khokhar A, Rashid A (2004), “Robust audio watermarking using
frequency selective spread spectrum theory”, Proceedings of IEEE
International Conference on Acoustics, Speech, and Signal Processing, pp.
385-388.
46 Mansour, M. F., and Tewfik, A. H. (2001), "Timescale invariant audio data
embedding”, Proceedings of International Conference on Multimedia and
Expo, pp. 76- 79.
47 Marina Bosi and Richard E. Goldberg (2002), Introduction to Digital Audio
Coding and Standards, Kluwer Academic Publishers, pp. 207-357.
48 Martin Steinebach, Fabien A. P. Petitcolas, Jana Dittmann, Nazim Fatès,
Caroline Fontaine, Frédéric Raynal and Christian Seibel (2001), "Stirmark
99
Benchmark: Audio Watermarking Attacks", Proceedings of Conference on
Information Technology: Coding and Computing, pp. 49- 54.
49 Mehdi Fallahpour and David Megias (2009), "High capacity audio
watermarking using FFT amplitude interpolation", IEICE Electron Express,
vol. 6 (14), pp. 1057-1063.
50 Mehdi Fallahpour and David Megías (2013), "High capacity logarithmic audio
watermarking based on the human auditory system", Proceedings of IEEE
International Symposium on Multimedia, pp. 28- 31.
51 Mehdi Fallahpour and David Megias (2014), “Robust Audio Watermarking
Based on Fibonacci Numbers”, Proceedings of 10th International
Conference onMobile Ad-hoc and Sensor Networks, pp. 343 – 349.
52 Min Wu (2001), Multimedia Data Hiding, Ph.D. Dissertation, Princeton
University.
53 Mitra S. and Manoharan S. (2009), “Experiments with and Enhancements to
Echo Hiding”, Proceedings of Fourth International Conference on Systems
and Networks Communications, pp. 129- 134.
54 Nedeljko Cvejic, Tapio Seppänen (2008), "Digital Audio Watermarking
Techniques and Technologies: Applications and Benchmarks", Information
Science Reference (IGI Global).
55 Nikhil Parab, Mark Nathan, Talele K. T. (2011), "Audio Steganography Using
Differential Phase Encoding", Proceedings of Technology Systems and
Management Communications in Computer and Information Science, vol.
145, pp 146-151.
56 Nugraha R. M. (2011), “Implementation of Direct Sequence Spread Spectrum
steganography on audio data”, Proceedings of International Conference on
Electrical Engineering and Informatics, pp. 1- 6.
57 Nutzinger M. (2012), “Real-time Attacks on Audio Steganography”, Journal
of Information Hiding and Multimedia Signal Processing, vol. 3, pp. 47-65.
58 Petitcolas, FAP; Anderson RJ; Kuhn MG (1999), "Information Hiding: A
survey", Proceedings of the IEEE (special issue on protection of multimedia
content), pp. 1062–1078.
59 Raffaele Pinardi, Fabio Garzia and Roberto Cusani (2013), "Peak-Shaped-
Based Steganographic Technique for MP3 Audio", Journal of Information
Security, vol. 4, pp. 12-18.
60 Ranjeeta Yadav, Sachin Yadav, Jyotsna Singh (2010), "Audio Watermarking
Based on PCM Technique”, International Journal of Computer
Applications, vol. 8(2), pp. 24-28.
100
61 Rupa C., Avadhani P. and Reddy E. (2012), “An Efficient Security Approach
using PGE and Parity Coding”, International Journal of Distributed and
Parallel Systems (IJDPS), vol. 3(6), pp. 119 - 125.
62 Sedgewick R. (1977), “Permutation Generation Methods”, ACM Computing
Surveys, vol. 9 (2), pp. 137–164.
63 Shah P., Choudhari P. and Sivaraman S. (2008), "Adaptive Wavelet Packet
Based Audio Steganography using Data History", Proceedings of the Third
international Conference onIndustrial and Information Systems, pp. 1-5.
64 Shirali-Shahreza S.and Manzuri-Shalmani M.T. Acoustics (2008), "High
capacity error free wavelet Domain Speech Steganography", Proceedings
of International IEEE International Conference on Speech and Signal
Processing, pp. 1729 - 1732.
65 Stefan Katzenbeisser, Fabien A. P. Petitcolas (2000), "Information Hiding
Techniques for Steganography and Digital Watermarking", ARTECH
House, Inc.
66 Steven W. S. (1997), The Scientist and Engineer's Guide to Digital Signal
Processing, California Technical Pub, pp. 351- 372.
67 Todd K. Moon (2005), Error Correction Coding: Mathematical Methods and
Algorithms, John Wiley & Sons Inc.
68 Tuan D.V., Hien T.D. At P.V. (2012), “A novel data hiding scheme for binary
image”, International Journal of Computer Science and Information
Security, vol. 10 (8), pp. 1-5.
69 Vimal J. and Alex A. M. (2014), "Audio steganography using dual randomness
LSB method", Proceedings of International Conference on Control,
Instrumentation, Communication and Computational Technologies, pp.
941-944.
70 Wallach, H., Newman, E. B., & Rosenzweig, M. R. (1949). "The precedence
effect in sound localization", The American Journal of Psychology, vol. 62,
pp. 315–336.
71 Wei Zeng, Haojun Ai and Ruimin Hu (2007), “A Novel Steganalysis Algorithm
of Phase Coding in Audio Signal”, Proceedings of Sixth International
Conference on Advanced Language Processing and Web Information
Technology, pp. 261 - 264.
72 Wu C. P., Su P.-C. and Kuo C.-C. J. (2000), “Robust and efficient digital audio
watermarking using audio content analysis”, Security and Watermarking of
Multimedia Contents, SPIE, vol. 3971, pp. 382-392.
101
73 Xing He (2008), Watermarking in Audio: Key Techniques and Technologies,
Cambria Press, pp. 14-15.
74 Xing He (2011), Signal Processing, Perceptual Coding and Watermarking of
Digital Audio: Advanced Technologies and Models, Igi Global, pp 1..13
75 Xuemin Zhao, Yuhong Guo, Jian Liu and Yonghong Yan (2011), “A Spread
Spectrum Audio Watermarking System with High Perceptual Quality”,
Proceedings of Third International Conference on Communications and
Mobile Computing (CMC), pp. 266- 269.
76 Yeo I. K. and Kim H. J. (2001), “Modified patchwork algorithm: A novel audio
watermarking scheme”, Proceedings of International Conference on
Information Technology: Coding and Computing, pp. 237 - 242.
77 Yifang Wei, Li Guo and Yujie Wang (2010), "Controlling bitrate
steganography on AAC audio", Proceedings of International Congress on
Image and Signal Processing (CISP), vol. 9, pp. 4373 - 4375.
78 Zamani M., Manaf A., Ahmad R. B. and Jaryani F. (2009), “A secure audio
steganography approach”, Proceedings of International Conference for
Internet Technology and Secured Transactions, pp. 1 - 6.
Internet
79 http://audiowatermarking.info/awt2_details.php
80 http://cs.uccs.edu/~cs525/audio/audio.html
81 http://debii.curtin.edu.au
82 http://www.iwdw.net/
83 http://sss-mag.com/ss.html#tutorial
84 http://www.jasondavies.com/catmap/
85 http://www.jiscdigitalmedia.ac.uk/guide/an-introduction-to-digital-audio/
86 http://www.nch.com.au/acm/formats.html
87 http://www.springer.com/series/7870
88 https://github.com/ayushev/encoder/tree/master/test
102
PHỤ LỤC
Thuật toán biến đổi Arnold
function [ out ] = arnold( in, iter ) if (ndims(in) ~= 2) error(‘mang hai chieu'); end [m n] = size(in); if (m ~= n) error([' LOI']); end out = zeros(m); n = n - 1; for j=1:iter for y=0:n for x=0:n p = [ 1 1 ; 1 2 ] * [ x ; y ]; out(mod(p(2), m)+1, mod(p(1), m)+1) = in(y+1, x+1); end end in = out; end end
Thuật toán giấu kết hợp mã Hamming
function Hiding_Alg1 fileID = fopen('d:\dohoa.cpp'); %fileID = fopen('d:\Duy_Tan_logo_64_64.bmp');
%fileID = fopen('d:\map.gif');
fni= 'd:\SP.wav' ; [Img, n] = fread(fileID); Img=reshape(Img, 1, []); S= bytes_bit_strings(Img); Img=S; fprintf('\nSo byte du lieu giau = %d\n', n); %x=Img; x= encode_H(Img); kk=numel(x) ; len=kk; fprintf('\nSo bit giau = %5.0f \n',kk); fprintf('\ndang thuc hien giau tin.....'); [y, fs] = audioread(fni,'native'); hh= numel(y); y1=y; for ii=1:len y1(ii)= bitset(y1(ii),1,x(ii)); end fprintf('\n So bit sai khac truoc khi ghi = %5.2f', sum(y1~=y)); fprintf('\n -gia tri SNR = %5.4f', snr(y1(1:hh), y1(1:hh)-y(1:hh))); %fprintf('\n ----gia tri MSE = %5.4f', MSE(y, y1)); % tan cong thay doi bit y1=ghi_ngau_nhien(y1,5); audiowrite('d:\E2.wav',y1,fs); fprintf('\n da giau xong!!!\n'); fprintf('\n dang lay tin....\n'); [y,fs] = audioread('d:\E2.wav','native'); x1(1:len)=0; for ii=1:len
103
x1(ii)= bitget(y(ii),1); end %x1= bitget(y(1:len),1); %xx=x1; xx= decode_H(x1); fprintf('\nDO dai chuoi bit nhan khi giai ma = %d\n', numel(xx)); hh=0; for ii=1:n if xx(ii)== Img(ii) hh=hh+1; end end fprintf('\n So bit sai khac khi nhan = %5d', sum(Img~=xx)); end
Thuật toán giấu điều chỉnh các bit trong mẫu để giảm độ lệch
function Hiding_Alg2 fileID = fopen('d:\dohoa.cpp'); %fileID = fopen('d:\Duy_Tan_logo_64_64.bmp'); %fileID = fopen('d:\map.gif'); [Img, n] = fread(fileID); Img=reshape(Img, 1, []); S= bytes_bit_strings(Img); Img=S; fprintf('\nSo byte du lieu giau = %d\n', n); x=Img; kk=numel(x) ; len=kk; [S, V] =Sinh_chuoi_S_V(len); fprintf('\nSo bit giau = %5.0f \n',kk); fni= 'd:\ja.wav' ; fprintf('\ndang thuc hien giau tin.....'); [y, fs] = audioread(fni,'native'); hh= numel(y); y1=y; vt=0; for i=1:len vt=vt+ S(i); h= y1(vt);bi= bitget(h,V(i)); if bi~=x(i) h= bitset(h,V(i),x(i)); vm= 1-x(i); end y1(vt)= h; end fprintf('\n -gia tri SNR = %5.4f', snr(y1(1:hh), y1(1:hh)-y(1:hh))); audiowrite('d:\E2.wav',y1,fs); fprintf('\n da giau xong!!!\n'); fprintf('\n dang lay tin....\n'); [y,fs] = audioread('d:\E2.wav','native'); x1(1:len)=0; vt=0; for i=1:len vt=vt+ S(i); h= y(vt); x1(i)= bitget(h,V(i)); end hh=0; for ii=1:len if x1(ii)== Img(ii) hh=hh+1;
104
end end fprintf('\n So bit sai khac khi nhan = %5d', sum(Img~=x1)); fprintf('\n So bit sai khac khi nhan = %5d', len-hh); xx= bit_strings_bytes(x1); fileID = fopen('d:\CAP_NGOAC_XYZ.cpp','w'); fwrite(fileID,xx); fclose(fileID); fprintf('\n da thuc hien xong, FINI !!!\n'); end
Thuật toán giấu 4 bit trên đoạn 25 mẫu
function Hiding_Alg3 fileID = fopen('d:\dohoa.cpp'); %fileID = fopen('d:\Duy_Tan_logo_64_64.bmp'); %fileID = fopen('d:\map.gif'); [Img, n] = fread(fileID); Img=reshape(Img, 1, []); S= bytes_bit_strings(Img); Img=S; fprintf('\nSo byte du lieu giau = %d\n', n); x=Img; kk=numel(x) ; len=kk; Img=reshape(Img, 1, []); n= length(Img); fprintf('\nDO dai chuoi bit goc = %d\n', n); kk=numel(Img); d=kk/4; fprintf('\nSo bit giau = %5.0f \n',kk); fni= 'd:\JA.wav' ; audioinfo( fni ); fprintf('\ndang thuc hien giau tin.....'); [y, fs] = audioread(fni,'native'); y1=y; hh= numel(y); noms=0; fprintf('\n Can dieu chinh %d doan de giau:\n', d); for i=1:d b_start= (i-1)*4 +1; b_end = b_start + 3; f_start= (i-1)*25 +1; f_end = f_start + 24; b(1:4)=Img(b_start:b_end); F(1:25)=y(f_start:f_end); len=25; A(1:25)=0; for ii=1:len A(ii)= bitget(F(ii),1); end r(1:4)=0; r(1)= bitxor(A(1), bitxor(A(2), bitxor(A(3), bitxor(A(4), A(5))))); r(2)= bitxor(A(6), bitxor(A(7), bitxor(A(8), bitxor(A(9), A(10))))); r(3)= bitxor(A(11), bitxor(A(12), bitxor(A(13), bitxor(A(14), A(15))))); r(4)= bitxor(A(16), bitxor(A(17), bitxor(A(18), bitxor(A(19), A(20))))); c(1:4)=0; c(1)= bitxor(A(1), bitxor(A(6), bitxor(A(11), bitxor(A(16), A(21))))); c(2)= bitxor(A(2), bitxor(A(7), bitxor(A(12), bitxor(A(17), A(22))))); c(3)= bitxor(A(3), bitxor(A(8), bitxor(A(13), bitxor(A(18), A(23))))); c(4)= bitxor(A(4), bitxor(A(9), bitxor(A(14), bitxor(A(19), A(24))))); s(1:4)=0; s(1)= bitxor(r(1),c(1));s(2)= bitxor(r(2),c(2)); s(3)= bitxor(r(3),c(3)); s(4)= bitxor(r(4),c(4)); dd=sum(b~=s); dc=0;
105
switch dd case 1 v1=1; while (s(v1)==b(v1)) v1=v1+1; end A((v1-1)*5 +5)= 1- A((v1-1)*5 +5); dc=1; case 2 v1=1; while (s(v1)==b(v1)) v1=v1+1; end v2=v1+1; while (s(v2)==b(v2)) v2=v2+1; end A((v1-1)*5 +v2)= 1- A((v1-1)*5 +v2); dc=1; case 3 v1=1; while (s(v1)==b(v1)) v1=v1+1; end v2=v1+1; while (s(v2)==b(v2)) v2=v2+1; end v3=v2+1; while (s(v3)==b(v3)) v3=v3+1; end A((v1-1)*5 +v2)= 1- A((v1-1)*5 +v2); A((v3-1)*5 +5)= 1- A((v3-1)*5 +5); dc=2; case 4 v1=1; v2=2; v3=3; v4=4; A((v1-1)*5 +v2)= 1- A((v1-1)*5 +v2); A((v3-1)*5 +v4)= 1- A((v3-1)*5 +v4); dc=2; end noms= noms +dc; F1= bitset(F,1,A); y1(f_start:f_end)=F1(1:25) ; end fprintf('\n SO MAU DIEU CHINH DE GIAU = %d\n', noms); fprintf('\n SAI KHAC THUC TE = %d\n', sum(y1~=y)); fprintf('\n -----SNR = %5.4f', snr(y1(1:hh), y1(1:hh)-y(1:hh))); audiowrite('d:\E2.wav',y1,fs); fprintf('\n da giau xong!!!\n'); fprintf('\n dang lay tin....\n'); [y,fs] = audioread('d:\E2.wav','native'); x1(1:kk)=0; for i=1:d b_start= (i-1)*4 +1; b_end = b_start + 3; f_start= (i-1)*25 +1; f_end = f_start + 24;
106
F=y(f_start:f_end); len=25; A(1:25)=0; for ii=1:len A(ii)= bitget(F(ii),1); end r(1:4)=0; r(1)= bitxor(A(1), bitxor(A(2), bitxor(A(3), bitxor(A(4), A(5))))); r(2)= bitxor(A(6), bitxor(A(7), bitxor(A(8), bitxor(A(9), A(10))))); r(3)= bitxor(A(11), bitxor(A(12), bitxor(A(13), bitxor(A(14), A(15))))); r(4)= bitxor(A(16), bitxor(A(17), bitxor(A(18), bitxor(A(19), A(20))))); c(1:4)=0; c(1)= bitxor(A(1), bitxor(A(6), bitxor(A(11), bitxor(A(16), A(21))))); c(2)= bitxor(A(2), bitxor(A(7), bitxor(A(12), bitxor(A(17), A(22))))); c(3)= bitxor(A(3), bitxor(A(8), bitxor(A(13), bitxor(A(18), A(23))))); c(4)= bitxor(A(4), bitxor(A(9), bitxor(A(14), bitxor(A(19), A(24))))); s(1:4)=0; s(1)= bitxor(r(1),c(1)); s(2)= bitxor(r(2),c(2)); s(3)= bitxor(r(3),c(3)) s(4)= bitxor(r(4),c(4)); xx=s; x1(b_start:b_end)=xx(1:4) ;
end fprintf('\n da lay tin xong!!!\n'); end
Thuật toán giấu thêm tiếng vọng
function hiding_Alg5 fni='D:\S.wav'; [x, fs] = audioread(fni); y1=x; %-- doc file logo anh %Img= imread('D:\Duy_Tan_logo_32_32.bmp');
fileID = fopen('d:\dohoa.cpp'); [Img, n] = fread(fileID); Img=reshape(Img, 1, []); Im= dec2bin(Img); disp('Kich thuoc chuoi='); disp(length(Im)); n=length(Im); w=Im; % n=1000; w=rand(1,n); % ----sinh chuoi ngau nhien tu cap khoa (7,9137) ---- k=9137; seed=7; a=0; r=0; for i=1:n if(i==1) a(i)=seed; r(i)=mod(a(i),2); else xx= mod(k*(a(end) + 2) , 10000); a(end+1)=xx; if (mod(xx,6)>2) r(end+1)=1; else r(end+1)=0; end end end %---------------------------------------------------- l= length(x); framesize=1000; kk= l/200; if(kk<n) disp('Khong the giau duoc l= '); else
107
d=0; for i=1:n if(w(i)== r(i)); else for j=(i-1)*framesize+441:i*framesize if( y1(j)== y1(j-440)) y1(j) = 0.99*y1(j) + 0.2*y1(j-440); else y1(j) = 0.99*y1(j) + 0.1*y1(j-440); end end d=d+1; end end %soundsc(y1,fs); disp('GIAU THANH CONG!!!'); audiowrite('D:\TC_R001_E.wav',y1, fs); y=x; hh= length(y); fprintf('\n --gia tri SNR = %5.4f', snr(y1(1:hh), y1(1:hh)-y(1:hh))); end end
Thuật toán giấu trên phép biến đổi DWT
function Hiding_Alg7 fni= 'd:\sp.wav' ; [y, fs, nb] = wavread(fni); dd= length(y); Img= imread('D:\yy.bmp'); I_Img= Img; Img=reshape(Img, 1, []); n= length(Img) ; fprintf('DO dai chuoi bit giau = %d', n); w(1:n)=Img(1:n); w1(1:n)=0; [A,D] = dwt(y,'sym4'); k1= length(A); k2= length(D); frameWidth = 200; fprintf('\n so bit co the giau = %d\n',( k2/ frameWidth)-10); hsize= frameWidth/2; numSamples = length(D);
numFrames = floor(numSamples/frameWidth);
dd=0.1; hd=dd/2; k=0; for i = 1:n startSample = (i-1)*frameWidth+1; endSample = startSample+frameWidth-1;
h1= sum(D(startSample:startSample + hsize-1))/hsize; h2= sum(D(startSample + hsize: endSample))/hsize; kk= mod(abs(h1-h2), dd); if(w(i)==1) if(kk<=hd)
D(startSample:startSample+hsize-1) =
D(startSample:startSample+hsize-1) + hd; k=k+1; end else if(kk>hd) D(startSample + hsize: endSample) =
D(startSample +hsize: endSample) + hd; k=k+1; end end end
108
fprintf('\nSo mau dieu chinh= %d/%d\n',k, n ); y1 = idwt(A,D, 'sym4'); x=y1; %x = awgn(y1,10,'measured' ); % Add white Gaussian noise. %x = imnoise(y1,'salt & pepper', 0.001); %x = imnoise(y1,'speckle', 0.001); d=0; soundsc(x, fs); for i=1:length(x) if(y1(i) ~=x(i)) d= d+1; end end fprintf('\n SAI KHAC KHI THEM NHIEU LA = %d', d); %Yq= quantize(y,8); k= length(y); if k> length(y1) k=length(y1); end fprintf('\n SNR = %5.4f', snr(y1(1:k), y1(1:k)- y(1:k))); kk= length(y); if kk > length(y1) kk= length(y1) end a = corr2(y(1:kk),y1(1:kk)); fprintf('\n NCC= %d',a); fprintf('\n Dang ghi file....\n'); wavwrite(x, fs,'D:\TT1.wav'); fprintf('\n Da ghi xong file!\n'); [y1, fs, nb] = wavread('D:\TT1.wav'); [A1,D1] = dwt(y1,'sym4'); for i = 1:n startSample = (i-1)*frameWidth+1;endSample = startSample+frameWidth-1;
h1= sum(D1(startSample:startSample + hsize-1))/hsize; h2= sum(D1(startSample + hsize: endSample))/hsize; kk= mod(abs(h1-h2),dd); if(kk >0.025) w1(i)= 1; end end d=0; for i=1:n if(w1(i) ~=w(i)) d= d+1; end end fprintf('\n Sai khac = %d', d); a = corr2(w,w1); fprintf('\n NCC = %d',a); %w1(5)=0; [number,ratio] = biterr(w(1:n),w1(1:n)); fprintf('\n diff = %d rate= %f\n', number,ratio); E_Img= reshape(w1(1:n),[38, 38]); figure; imshow(E_Img);
end