Tỷ lệ tín hiệu trên nhiễu (thường gọi là SNR hay S/N) là một biện pháp được sử dụng để định lượng xem có bao nhiêu tín hiệu bị hỏng bởi tiếng ồn. Nó được định nghĩa là tỷ lệ năng lượng của tín hiệu gốc so với năng lượng của tín hiệu nhiễu làm hư hỏng. Thường thì SNR được trích dẫn cho các tín hiệu điện, nhưng nó có thể được áp dụng cho bất kỳ hình thức tín hiệu nào. Trong ít thuật ngữ kỹ thuật, SNR so sánh mức độ của một tín hiệu mong muốn (như là tiếng nhạc) với mức độ tiếng ồn xung quanh. Nếu tỷ lệ này cao, các tiếng ồn gây khó chịu ít. SNR đôi khi được sử dụng chính thức để chỉ tỷ lệ các thông tin hữu ích cho dữ liệu sai hoặc không liên quan trong một cuộc trò chuyện, trao đổi. Ví dụ, trong các diễn đàn thảo luận trực tuyến và cộng đồng trực tuyến khác, các bài viết ngoài chủ đề thảo luận và các thư rác được coi là “tiếng ồn” là can thiệp vào “tín hiệu” của cuộc thảo luận.
SNR được định nghĩa là tỷ lệ năng lượng giữa một tín hiệu (có ý nghĩa thông tin) và tiếng ồn nền (tín hiệu không mong muốn):
Với P là năng lượng trung bình. Cả hai tín hiệu và tiếng ồn phải được đo tại các điểm giống nhau hoặc tương đương trong một hệ thống và trong cùng một hệ thống băng thông. Nếu tín hiệu và tiếng ồn được đo trên cùng một trở kháng, thì SNR có thể thu được bằng cách tính toán bình phương của biên độ tỷ lệ với công thức như sau:
Trong đó A là bình phương trung bình của giá trị gốc (Root Mean Square hay RMS) biên độ (ví dụ: điện áp RMS). Bởi vì nhiều tín hiệu có một phạm vi động, SNRs thường được biểu diễn bằng cách sử dụng logarit decibel (dB). Trong decibel, SNR được tính bằng cách sử dụng tỷ lệ biên độ như sau:
2
SNRdB = 10log10 Asignal = 20log10
Anoise
Asignal Anoise
CHƯƠNG 3 PHÂN TÍCH HỆ THỐNG 3.1. Phân tích các yêu cầu của hệ thống
Khi mà môi trường truyền tin ngày một đa dạng, tốc độ truyền tin nhanh chóng thì cũng xuất hiện nhiều vấn nạn như là ăn cắp, sao chép, rò rỉ thông tin… Cần có phương án để bảo vệ thông tin trước các vấn nạn đó, chính vì vậy mà chương trình ẩn giấu thông tin bằng phương pháp LSB cải tiến được xây dựng. Chương trình với chức năng chính là thực hiện ẩn giấu và trích xuất thông tin trên tệp WAVE. Chính vì vậy chương trình yêu cầu phải có những chức năng sau:
- Đọc và ghi thông tin tệp WAVE với dạng chuẩn PCM hai kênh 16 bít. - Đọc thông tin mật từ tệp hoặc cho phép nhập từ bàn phím và ghi thông
tin mật ra tệp.
- Tạo khoá để thực hiện mã hoá thông tin mật và thực hiện nhúng thông tin mật vào tệp WAVE hay trích xuất thông tin mật từ tệp WAVE.
- Nhúng và trích xuất thông tin mật trên tệp WAVE.
- Đánh giá mức độ ảnh hưởng của việc ẩn giấu thông tin mật trong tệp WAVE.
Bên cạnh đó thì chương trình cũng cần phải có thiết kế gọn nhẹ, giao diện thân thiện, dễ sử dụng. Chương trình được xây dựng bằng công nghệ Java với công cụ lập trình NetBean IDE 6.9.1.
3.2. Phân tích các yêu cầu về xử lý và dữ liệu
Chương trình tương tác với người sử dụng để tác động lên các đối tượng bao gồm tệp WAVE và thông tin mật. Với yêu cầu về chức năng của hệ thống đã được nêu ở trên, các yêu cầu về xử lý và dữ liệu như sau:
Quy trình giấu thông tin:
Hình 3.1. Sơ đồ quy trình giấu thông tin
4. Người dùng thực hiện chức năng giấu thông tin mật vào trong tệp WAVE thì chương trình thực hiện mã hoá thông tin mật với khoá đã nhập. Thông tin sau khi được mã hoá sẽ được nhúng từng bít vào các mẫu với trọng số được quy định trong chế độ giấu. Trong khi giấu thông tin mật, thực hiện tính toán mức độ ảnh hưởng (SNR) của việc giấu tin đối với tệp WAVE gốc. Quá trình giấu hoàn tất, chương trình thực hiện ghi ra tệp WAVE mới có dung lượng giống với tệp WAVE gốc nhưng có chứa thông tin mật, chỉ phân biệt được khi thực hiện kiểm tra HASHES (MD5 Hash, SHA-1 Hash, CRC-32).
3. Người dùng chọn tệp tin chứa thông tin mật hoặc nhập trực tiếp thông tin mật vào ô nhập thông tin mật. Chương trình thông báo độ dài thông tin mật hiện tại và độ dài cho phép tối đa của thông tin mật.
2. Người dùng chọn tệp tin khoá, chọn chế độ giấu và nhập mật khẩu, chương trình thực hiện tính toán ra tập hợp các vị trí mẫu giấu tin dựa trên thông tin tệp WAVE và khoá theo một tiêu chí nào đó.
1. Người sử dụng chọn tệp WAVE dùng để chứa thông tin mật, chương trình tiến hành đọc thông tin và hiển thị các thông tin cơ bản của tệp WAVE hoặc thông báo lỗi nếu định dạng tệp không được hỗ trợ.
Quy trình trích xuất thông tin:
Hình 3.2. Sơ đồ quy trình trích xuất thông tin
Ngoài hai quy trình chính còn có các quy trình phụ với mục đích tạo dữ liệu đầu vào phục vụ cho quy trình chính, hoặc nhận dữ liệu đầu ra của quy trình chính để sử dụng trong công tác đánh giá. Có hai quy trình phụ là:
Quy trình tạo khoá: người dùng chọn tệp tin WAVE dùng để chứa thông tin mật, chọn tệp tin khoá (là một tệp tin có định dạng và kích thước bất kì) và nhập mật khẩu. Sau đó chọn chức năng tạo khoá, chương trình sẽ thực hiện tính toán tìm ra một tập các giá trị là vị trí của các mẫu dùng để giấu tin trong tệp tin WAVE dựa trên khoá được tạo. Thông tin mật cũng sẽ được mã hoá bằng khoá này trước khi được nhúng vào trong tệp tin WAVE.
4. Người dùng có thể chỉnh sửa, sao chép trực tiếp thông tin mật hoặc lưu thông tin mật ra dạng tệp tin văn bản.
3. Người dùng chọn chức năng trích xuất thông tin mật, chương trình thực hiện tính toán và trích xuất thông tin mật từ tệp WAVE có chứa thông tin mật sau đó hiển thị nội dung thông tin mật.
2. Người dùng chọn tệp tin khoá, chọn chế độ giấu và nhập mật khẩu, các thông tin này phải giống với thông tin đã được sử dụng trong quá trình giấu thông tin.
1. Người dùng chọn tệp WAVE gốc và tệp WAVE chứa thông tin mật, chương trình tiến hành đọc thông tin và hiển thị các thông tin cơ bản của tệp WAVE.
Quy trình tính toán SNR: chức năng thực hiện tính toán sự biến đổi năng lượng giữa tín hiệu gốc và tín hiện sau khi nhúng thông tin dựa trên số lượng mẫu bị tác động. Các giá trị này được sử dụng để vẽ đồ thị SRN thể hiện mức độ ảnh hưởng của việc giấu thông tin mật đối với tệp tin WAVE gốc.
3.3. Phân tích các yêu cầu về chức năng3.3.1. Sơ đồ chức năng 3.3.1. Sơ đồ chức năng
Dựa vào các yêu cầu của hệ thống cần xây dựng, các yêu cầu về dữ liệu và xử lý có thể vẽ biểu đồ chức năng của chương trình ẩn giấu thông tin bằng phương pháp LSB cải tiến như sau:
Hình 3.3. Sơ đồ chức năng
CHƯƠNG TRÌNH ẨN GIẤU THÔNG TIN BẰNG PHƯƠNG PHÁP LSB CẢI TIẾN
1.0 TÍNH TOÁN KHOÁ
2.0 NHÚNG THÔNG TIN MẬT
3.0 TRÍCH XUẤT
THÔNG TIN MẬT 4.0 TÍNH TOÁN SNR
3.1 Trích Xuất Thông Tin Mật 3.2 Giải Mã Thông Tin Mật
3.3 Hiển Thị Thông Tin Mật
3.3 Lưu Tệp Thông Tin Mật 1.1 Đọc Tệp Tin
WAVE 1.2 Đọc Tệp Tin
Khoá 1.3 Đọc Mật
Khẩu 1.3 Tạo Khoá Bí
Mật
2.1 Nhập Thông Tin Mật 3.2 Mã Hoá Thông Tin Mật 3.3 Nhúng Thông
Tin Mật 3.3 Lưu Tệp Chứa Tin Mật
4.1 Tính Toán SNR 4.2 Vẽ Biểu Đồ
SNR 4.3 Lưu Biểu Đồ
Giải thích:
Tính toán khoá: tạo khoá phục vụ cho quá trình nhúng và trích xuất thông tin mật. Các dữ liệu tham gia vào quá trình tạo khoá bao gồm thông tin tệp WAVE được đọc từ tệp WAVE do người dùng chỉ định. Trong quá trình nhúng thông tin mật tệp này đóng vai trò là tệp chứa, trong quá trình trích xuất thông tin mật tệp này đóng vai trò tệp gốc và cần phải có tệp WAVE chứa thông tin mật phục vụ cho việc trích xuất thông tin. Ngoài ra còn có thông tin tệp khoá và mật khẩu do người dùng nhập vào, tất cả các dữ liệu này này phục vụ cho quá trình tạo khoá.
Nhúng thông tin mật: thực hiện nhúng nội dung thông tin mật vào trong tệp chứa. Thông tin mật được lấy từ tệp hoặc do người dùng nhập từ bàn phím, sau đó thông tin này được mã hoá bằng khoá đã được tạo. Thông tin mật sau khi được mã hoá sẽ được nhúng vào tệp chứa WAVE, vị trí nhúng từng bít tin của thông tin mật được quy định bởi khoá. Sau khi nhúng thông tin mật thành công thì ghi tệp WAVE mới có chứa thông tin mật.
Trích xuất thông tin mật: thực hiện trích xuất nội dung thông tin mật từ tệp WAVE có chứa thông tin mật. Sử dụng khoá trong quá trình nhúng thông tin mật để thực hiện trích xuất thông tin mật, thông tin mật sau khi được trích xuất đang ở dạng mã hoá. Sử dụng khoá để giải mã thu lại thông tin mật ban đầu, có thể chỉnh sửa, sao chép thông tin mật trên chương trình hoặc lưu lại thành tệp.
Tính toán SNR: trong thao tác trên tệp thông tin kỹ thuật số, đặc biệt là tệp WAVE thì có một tỉ số quan trọng đánh giá việc tái hiện lại tín hiệu gốc là SNR. Chương trình thực hiện tính toán SNR và thể hiện trên đồ thị trực quan, bên cạnh đó còn cho phép lưu lại đồ thị thông tin SNR dưới dạng hình ảnh.
3.3.2. Sơ đồ luồng dữ liệua. Sơ đồ ngữ cảnh a. Sơ đồ ngữ cảnh
Hình 3.4. Sơ đồ ngữ cảnh
Luồng dữ liệu:
Đối với người giấu: dữ liệu bao gồm tệp WAVE gốc, thông tin mật và các thông tin cần thiết như tệp tin khoá và mật khẩu được người giấu đưa vào chương trình để thực hiện công việc ẩn giấu thông tin, dữ liệu trả về là tệp WAVE chứa thông tin mật bên trong.
Đối với người nhận: dữ liệu bao gồm tệp WAVE chứa thông tin mật và các thông tin giống với quá trình giấu tin được thực hiện bởi người giấu bao gồm tệp WAVE gốc, tệp tin khoá và mật khẩu (thông tin này được cung cấp bởi người giấu). Được đưa vào chương trình để thực hiện công việc trích xuất thông tin, dữ liệu trả về là thông tin mật.
Đối với người thứ ba: là người không có quyền truy cập vào thông tin mật được giấu trong tệp WAVE. Do người này không có các thông tin cần thiết một cách chính xác (tệp WAVE gốc, tệp khoá và mật khẩu) nên việc đưa thông tin vào chương trình là sai lệch, nên kết quả trả về là sai hoặc vô nghĩa.
Tệp WAVE gốc và tệp WAVE chứa tin mật, mật khẩu, tệp khoá
0 ẨN GIẤU THÔNG TIN BẰNG PHƯƠNG PHÁP LSB CẢI TIẾN
Tệp WAVE gốc, mật khẩu, tin mật
Tệp WAVE chứa thông tin mật
Thông tin mật
Tấn công tìm cách lấy thông tin
Thông tin vô nghĩa
NGƯỜI GIẤU NGƯỜI NHẬN
b. Sơ đồ luồng dữ liệu mức khác
Hình 3.5. Sơ đồ luồng dữ liệu mức đỉnh
Luồng dữ liệu:
Đối với người giấu: người giấu thực đưa dữ liệu đầu vào bao gồm thông tin tệp WAVE gốc, tệp khoá và mật khẩu vào chương trình thông qua chức năng tính toán khoá, dữ liệu đầu ra là khoá bí mật và mảng vị trí giấu tin. Dữ liệu này là đầu vào của chức năng nhúng thông tin mật, kết hợp với thông tin mật do người giấu đưa vào, kết quả trả về là tệp WAVE chứa thông tin mật.
Đối với người nhận: người nhận thực hiện đưa dữ liệu đầu vào là các thông tin giống với quá trình giấu tin và tệp WAVE chứa thông tin mật, thực hiện chức năng tính toán khoá, dữ liệu trả về là khoá bí mật và mảng vị trí giấu tin. Là dữ liệu đầu vào của chức năng trích thông tin mật, dữ liệu trả về của chức năng này là thông tin mật.
1 TÍNH TOÁN KHOÁ 2 NHÚNG THÔNG TIN MẬT 3 TRÍCH THÔNG TIN MẬT 4 TÍNH TOÁN SNR
Tệp WAVE chứa thông tin mật
Giá trị SNR
Tệp WAVE gốc, mật khẩu, tệp khoá
Yêu cầu tính toán SNR Đồ thị SNR
Thông tin mật
Thông tin mật Khoá bí mật
mảng vị trí
Tệp WAVE gốc và tệp WAVE chứa tin mật, mật khẩu, tệp khoá
K ho á bi ́ m ật m ản g vi ̣ tr í NGƯỜI GIẤU
Chức năng tính toán khoá:
Hình 3.6. Sơ đồ luồng dữ liệu (chức năng 1)
Diễn giải:
Người dùng bao gồm người giấu và người nhận thông tin, trước khi thực hiện chức năng nhúng hoặc trích xuất thông tin mật thì cần phải thực hiện chức năng tạo khoá bí mật.
Người dùng nhập chọn tệp tin WAVE gốc, nếu tệp tin này không tồn tại hoặc có định dạng không được hỗ trợ thì chức năng Đọc Tệp Tin WAVE sẽ đưa ra thông báo yêu cầu nhập lại. Đối với mật khẩu và tệp tin khoá thì quá trình cũng diễn ra tương tự.
Khi các thông tin nhập vào là đầy đủ và được chấp nhận thì thực hiện quá trình đọc để lấy thông tin phục vụ cho quá trình Tạo Khoá, đầu ra của chức năng này là khoá bí mật được sử dụng trong quá trình nhúng hoặc trích xuất thông tin mật sau này. Hoàn thành quá trình tạo khoá.
1.1ĐỌC TỆP ĐỌC TỆP TIN WAVE 1.4 TẠO KHOÁ 1.2 ĐỌC TỆP TIN KHOÁ 1.3 NHẬP MẬT KHẨU
Chọn tệp WAVE gốc
Nhập mật khẩu
Thông tin tệp WAVE
Nội dung mật khẩu Thông tin
tệp khoá
NGƯỜI DÙNG
Yêu cầu lại nhập mật khẩu Yêu cầu tệp WAVE gốc
Yêu cầu tệp tin khoá
Chức năng nhúng thông tin mật:
Hình 3.7. Sơ đồ luồng dữ liệu (chức năng 2)
Diễn giải:
Người giấu thực hiện nhập thông tin mật trước khi thực hiện chức năng Nhúng Thông Tin Mật, nếu thông tin mật là trống thì chức năng Nhập Thông Tin Mật yêu cầu nhập thông tin mật. Thông tin mật sau khi nhập vào sẽ được mã hoá và khoá bí mật lấy từ chức năng Tính Toán Khoá được đưa vào chức năng Nhúng Thông Tin Mật, quá trình nhúng thực hiện thành công thì kết quả đầu ra là dữ liệu tệp WAVE có chứa thông tin mật. Đây là dữ liệu đầu vào của chức năng Ghi Tệp Chứa Thông Tin Mật, đầu ra của chức năng này là tệp WAVE có chứa thông tin mật. Hoàn thành quá trình nhúng thông tin mật vào tệp tin WAVE gốc. 2.4 GHI TỆP CHỨA TIN MẬT 2.3 NHÚNG THÔNG TIN MẬT 2.2 MÃ HOÁ THÔNG TIN MẬT 2.1 NHẬP THÔNG TIN MẬT Nhập thông tin mật T hô ng tin m ật
Thông tin bị mã hoá
D ữ liê ̣u ch ứa tin m ật Tệp chứa tin mật
NGƯỜI GIẤU Yêu cầu nhập
Chức năng trích thông tin mật:
Hình 3.8. Sơ đồ luồng dữ liệu (chức năng 3)
Diễn giải:
Trước khi thực hiện chức năng này người nhận cần thực hiện chức năng Tính Toán Khoá trước. Sau đó người nhận thực hiện nhập tệp WAVE có chứa thông tin mật vào, nếu tệp tin WAVE không tồn tại thì yêu cầu nhập lại. Thông tin nhập vào đầy đủ thì thực hiện quá trình trích xuất thông tin mật, đầu ra là thông tin mật ở dạng bị mã hoá và đây là dữ liệu đầu vào của chức năng Giải Mã Thông Tin Mật. Thông tin mật sau khi được giải mã được hiện thị dạng văn bản kết thúc quá trình trích xuất thông tin mật, người dùng có thể thực hiện chức năng Lưu Thông Tin Mật để thực hiện việc lưu thông tin mật ra dạng tệp văn bản. 3.4 LƯU THÔNG TIN MẬT 3.2 GIẢI MÃ THÔNG TIN MẬT 3.1 TRÍCH THÔNG TIN MẬT 3.3 HIỆN THÔNG TIN MẬT
Thông tin mật dạng văn bản
Thông tin mật dạng nhị phân
Thông tin mật dạng mã hoá
Thông tin mật dạng tệp Tệp WAVE chứa
thông tin mật
Yêu cầu thông tin mật
Thông tin mật dạng nhị phân
NGƯỜI NHẬN
Yêu cầu lưu thông tin mật