Kỹ thuật mã hóa LSB là cách đơn giản nhất để che giấu thông tin trong một đối tƣợng âm thanh kỹ thuật số. Mã hóa LSB cho phép một số lƣợng lớn các dữ liệu đƣợc giấu bằng cách thay thế các bit ít quan trọng nhất (LSB) của mỗi điểm lấy mẫu bằng một bít một thông tin nhị phân Hình 3.1 minh họa cách các thông tin bí mật đƣợc mã hóa trong một mẫu 8-bit sử dụng kỹ thuật LSB. Tốc độ truyền dữ liệu trong mã hóa LSB là 1 kbps mỗi kHz. Trong một số mã hóa LSB, hai bít LSB của một mẫu đƣợc thay thế bằng hai bit thông tin bí mật. Nó làm tăng số lƣợng dữ liệu có thể đƣợc mã hóa nhƣng nó cũng làm tăng nhiễu trong các tập tin âm thanh. Để trích xuất một thông tin bí mật từ một tập tin âm thanh đƣợc mã hóa LSB (đối tƣợng stego), ngƣời nhận yêu cầu truy cập trình tự của mẫu đƣợc sử dụng trong quá trình nhúng. Thông thƣờng, độ dài của các thông tin bí mật đƣợc mã hóa là ít hơn so với tổng số mẫu trong một tập tin âm thanh.
Hình 3.1 Phƣơng thức thay thế bít trong thuật toán LSB
1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1
44
2. Thuật toán nhúng dữ liệu trên nền âm thanh sử dụng phương pháp mã hóa LSB. 2.1 Tiền xử lý thuật toán giấu và tách tin LSB.
Để có thể xây dựng chƣơng trình, trƣớc hết cần tìm hiểu một số hàm thành phần với mục đích cài đặt chƣơng trình thuận lợi:
- Hàm chuyển đổi từ chuỗi kí tự sang số nhị phân. - Hàm chuyển đổi từ chuỗi số nhị phân sang chuỗi kí tự.
Tóm tắt thuật toán thay thế LSB đơn giản
2.2 Thuật toán giấu tin.
Đầu vào:
- Tập tin âm thanh định dạng .wav. - Thông điệp bí mật (định dạng .text).
- Khóa bí mật (định dạng text có chiều dài không lớn hơn 8 ký tự).
Đầu ra:
- File âm thanh mang tin.
Các bước thực hiện:
Bƣớc 1: Đọc tập tin âm thanh chƣa đƣơc giấu thông tin bí mật.
Bƣớc 2: Bỏ 44 bytes đầu tiên của tập tin vì đây là phần header của tập tin âm thanh.
Bƣớc 3: Chuyển thông tin bí mật sang dạng nhị phân.
Bƣớc 4: Chuyển độ dài thông tin bí mật sang dạng nhị phân.
Bƣớc 5: Chuyển khóa bí mật sang dạng nhị phân 8 bít. Khóa bí mật giúp bảo vệ và nhận diện tập tin âm thanh đã đƣợc giấu thông tin bí mật.
Bƣớc 6: Khóa bí mật đƣợc giấu trong 8 mẫu dữ liệu đầu tiên. Nếu không có khóa bí mật thì tập tin âm thanh sẽ không giấu thông tin bí mật.
45
Bƣớc 8: 10 mẫu dữ liệu tiếp theo sẽ dùng để giấu chiều rộng của thông tin bí mật.
Bƣớc 9: Thông tin bí mật sẽ đƣợc giấu trong các mẫu tiếp theo cho đến hết chiều dài của thông tin bí mật ở dạng nhị phân.
2.3 Thuật toán tách tin.
Đầu vào:
- Tập tin âm thanh định dạng .wav đã đƣợc giấu thông tin mật. - Khóa bí mật (định dạng text có chiều dài không lớn hơn 8 ký tự).
Đầu ra:
- Thông tin bí mật đƣợc tách.
Các bước thực hiện:
Bƣớc 1: Đọc tập tin âm thanh đã đƣơc giấu thông tin bí mật.
Bƣớc 2: Bỏ qua 44 bytes đầu tiên của tập tin vì đây là phần header của tập tin âm thanh, chỉ lấy phần mẫu dữ liệu âm thanh.
Bƣớc 3: Chuyển khóa bí mật sang dạng nhị phân 8 bit.
Bƣớc 4: Kiểm tra xem khóa bí mật có trùng với 8 bit tách từ 8 mẫu đầu tiên của dữ liệu âm thanh không. Nếu không thì tập tin âm thanh chƣa đƣợc nhúng hoặc mật khẩu không đúng.
Bƣớc 5: Kích thƣớc của thông tin bí mật sẽ đƣợc lấy từ 20 mẫu dữ liệu tiếp theo.
Bƣớc 6: Từ kích thƣớc của thông tin mật tính đƣợc chiều dài của thông tin mật dƣới dạng nhị phận .
Bƣớc 7: Lấy các bít của thông tin bí mật ở các mẫu dữ liệu tiếp theo cho đến hết chiều dài của thông tin bí mật dƣới dạng nhị phân.
Bƣớc 8: Chuyển thông tin bí mật từ nhị phân sang dạng ký tự.
46
Đó là cách đơn giản nhất để che giấu thông tin trong một tập tin âm thanh. Nó cho phép số lƣợng lớn các dữ liệu đƣợc giấu trong một tập tin âm thanh. Kỹ thuật mã hóa LSB thƣờng không tạo ra thay đổi nhiều trong tập tin âm thanh
2.5 Nhược điểm của kỹ thuật mã hóa LSB.
Thông tin bí mật dễ bị tổn thất trƣớc các kiểu tấn công thông thƣờng nhƣ lấy lại mẫu, lọc thông, biến đổi tín hiệu từ tƣơng tự sang số hoặc ngƣợc lại…..
3. Cài đặt và thử nghiệm chương trình. 3. 1. Môi trường cài đặt
Ngôn ngữ cài đặt, môi trƣờng soạn thảo và chạy chƣơng trình đƣợc thực hiện trên ngôn ngữ lập trình Matlap 2009b.
Hệ điều hành Window 7 và môi trƣờng Net FrameWork 4.0. Giao diện của chƣơng trình:
Hình 3.2 Giao diện chính của chƣơng trình
47
Đầu tiên chọn chế độ Nhúng dữ liệu trong khung Lựa Chọn. Nhấn vào nút Chon File để chọn tập tin audio.
Hình 3.3 Chọn tập tin audio.
Thông tin mật cần giấu chúng ta có thể đánh trực tiếp vào edit text trong khung dữ liệu đƣợc nhúng hoặc nhấn nút Chon File để chọn file text muốn nhúng.
Đánh khóa bảo mật vào ô Mat Khau. Lƣu ý khóa bảo mật không dài hơn 8 ký tự.
Bấm nút Nhung Du Lieu để thực hiện nhúng dữ liệu.
48
Hình 3.4 Nhúng dữ liệu thành công
File âm thanh sau khi nhúng sẽ đƣợc lƣu trong thƣ mục với phần cài đặt chƣơng trình và lấy tên là New_ngay_gio_phut nhúng dữ liệu. Ví dụ
New_08-jan-2015_11_4.wav.
Sau khi thực hiện giấu tin thành công, đầu ra sẽ bao gồm:
Thông báo “Giấu tin thành công!”.
Khóa bảo mật cần.
File âm thanh đẫ giấu tin.
Quy trình tách tin.
Đánh khóa bảo mật vào ô Mat Khau.
Chọn chế độ Khôi Phục Dữ Liệu trong khung lựa chọn. Sau đó bấm nút Chon File để chọn file nhạc đã đƣợc nhúng dữ liệu.
49
Hình 3.5 Quy trình hôi phục dữ liệu
Nếu khóa bảo mật đúng thì thông tin mật sẽ đƣợc hiện trong lên trong khung Du Liêu Duoc Phuc Hoi.
Hình 3.6 Dữ liệu đƣợc phục hồi thành công
Nếu dữ liệu không đƣợc phục hồi thành công do khóa bảo mật sai hoặc tập tin âm thanh chƣa đƣợc nhúng dữ liệu.
50
Hình 3.7 Thông báo khôi phục dữ liệu thất bại
Ghi âm.
Để tạo một tập tin âm thanh để nhúng dữ liệu ngƣời dùng có thể dùng chức năng ghi âm để tạo một tập tin âm thanh mình mong muốn.
Để thực hiện chực năng này ngƣời dùng cần thực hiện các bƣớc sau:
Lựa chọn thời gian mong muốn vào bằng các đánh thời gian (đơn vị s) vào ô Thoi Gian.
Bâm nút Ghi Am để bắt đầu ghi âm.
Sau khi việc ghi âm hoàn tất thì sẽ hiện ra:
Chúng ta đánh tên mình muốn lƣu rồi bấm nút Save để hoàn tất.
Bật, tắt tập tin âm thanh.
Bấm nút Mo Audio. Sau đó lựa chọn tập tin âm thành cần mở rồi bấm nút Open.
51
Hình 3.8 Mở tập tin âm thanh.
Để tắt thì bấm nút Tat trên giao diện của chƣơng trình.
3.3 So sánh phổ biên độ của âm thanh trước và sau khi nhúng dữ liệu.
52
Hình 3.10 Phổ biên độ âm thanh sau khi nhúng dữ liệu
Nhân xét phổ biên dộ âm thanh trƣớc và sau khi nhúng không có thay đổi nhiều.
3.4 Đánh giá về chương trình.
Ƣu Điểm:
Chƣơng trình chạy tốt, dễ dàng sử dụng.
Thông tin mật trƣớc khi nhúng và sau khi nhúng hoàn toàn giống nhau.
Chất lƣợng âm thanh trƣớc và sau khi nhúng không thay đổi nhiều, làm cho ngƣời nghe rất khó phát hiện.
Nhƣợc điểm:
Chƣơng trình chỉ thực hiện đƣợc vời tập tin âm thanh định dạng wav, và dữ liệu của thông tin bí mật là tập tin định dạng text.
Giao diện chƣơng trình chƣa hợp lý.
Thuật toán thực hiện trong chƣơng trình đơn giản.
Mức độ bảo mật của khóa bảo vệ còn thấp.
53
Nâng cấp thuật toán để việc bảo mật tốt hơn, tránh đƣợc tác động của bên ngoài.
Xây dựng chƣơng trình để có thể thực hiện với file có các định dạng khác nhƣ .mp3. …Và thông tin mật cần nhúng có thể mở rộng ra với hình ảnh, audio…..
4. Xây dựng mô hình truyền dữ liệu qua wifi. 4.1 Giao thức TCP. 4.1 Giao thức TCP.
Giao thức TCP (Transmission Control Protocol - " Giao thức điều khiển truyền vận") là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các ứng dụng trên các máy chủ đƣợc nối mạng có thể tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự TCP còn phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thƣ điện tử) đồng thời chạy trên cùng một máy chủ.
Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dƣới và một ứng dụng bên trên. Các ứng dụng thƣờng cần các kết nối đáng tin cậy kiểu đƣờng ống để liên lạc với nhau, trong khi đó, giao thức IP không cung cấp những dòng kiểu đó, mà chỉ cung cấp dịch vụ chuyển gói tin không đáng tin cậy. TCP làm nhiệm vụ của tầng giao vận trong mô hình OSI đơn giản của các mạng máy tính.
Thiết lập kết nối
Để thiết lập một kết nối, TCP sử dụng một quy trình bắt tay 3 bƣớc (3-way handshake) Trƣớc khi client thử kết nối với một server, server phải đăng ký một cổng và mở cổng đó cho các kết nối: đây đƣợc gọi là mở bị động. Một khi mở bị động đã đƣợc thiết lập thì một client có thể bắt đầu mở chủ động. Để thiết lập một kết nối, quy trình bắt tay 3 bƣớc xảy ra nhƣ sau:
1. Client yêu cầu mở cổng dịch vụ bằng cách gửi gói tin SYN (gói tin TCP) tới
server, trong gói tin này, tham số sequence number đƣợc gán cho một giá trị ngẫu nhiên X.
54
2. Server hồi đáp bằng cách gửi lại phía client bản tin SYN-ACK, trong gói tin này, tham số acknowledgment number đƣợc gán giá trị bằng X + 1, tham số sequence number đƣợc gán ngẫu nhiên một giá trị Y
3. Để hoàn tất quá trình bắt tay ba bước, client tiếp tục gửi tới server bản tin ACK, trong bản tin này, tham số sequence number đƣợc gán cho giá trị bằng X + 1 còn tham số acknowledgment number đƣợc gán giá trị bằng Y + 1
Tại thời điểm này, cả client và server đều đƣợc xác nhận rằng, một kết nối đã đƣợc thiết lập.
Truyền dữ liệu
Một số đặc điểm cơ bản của TCP để phân biệt với UDP:
Truyền dữ liệu không lỗi (do có cơ chế sửa lỗi/truyền lại) Truyền các gói dữ liệu theo đúng thứ tự
Truyền lại các gói dữ liệu mất trên đƣờng truyền Loại bỏ các gói dữ liệu trùng lặp
Cơ chế hạn chế tắc nghẽn đƣờng truyền
Ở hai bƣớc đầu tiên trong ba bƣớc bắt tay, hai máy tính trao đổi một số thứ tự gói ban đầu (Initial Sequence Number -ISN). Số này có thể chọn một cách ngẫu nhiên. Số thứ tự này đƣợc dùng để đánh dấu các khối dữ liệu gửi từ mỗi máy tính. Sau mỗi byte đƣợc truyền đi, số này lại đƣợc tăng lên. Nhờ vậy ta có thể sắp xếp lại chúng khi tới máy tính kia bất kể các gói tới nơi theo thứ tự thế nào.
Trên lý thuyết, mỗi byte gửi đi đều có một số thứ tự và khi nhận đƣợc thì máy tính nhận gửi lại tin báo nhận (ACK). Trong thực tế thì chỉ có byte dữ liệu đầu tiên đƣợc gán số thứ tự trong trƣờng số thứ tự của gói tin và bên nhận sẽ gửi tin báo nhận bằng cách gửi số thứ tự của byte đang chờ.
55
Các cổng TCP
TCP sử dụng khái niệm số hiệu cổng (port number) để định danh các ứng dụng gửi và nhận dữ liệu. Mỗi đầu của một kết nối TCP có một số hiệu cổng (là số không dấu 16-bit) đƣợc gán cho ứng dụng đang nhận hoặc gửi dữ liệu. Các cổng đƣợc phân thành ba loại cơ bản: nổi tiếng, đƣợc đăng ký và động/cá nhân. Các cổng nổi tiếng đã đƣợc gán bởi tổ chức Internet Assigned Numbers Authority (IANA) và thƣờng đƣợc sử dụng bởi các tiến trình mức hệ thống hoặc các tiến trình của root. Ví dụ: FTP (21), TELNET (23), SMTP (25) và HTTP (80). Các cổng đƣợc đăng ký thƣờng đƣợc sử dụng bởi các ứng dụng ngƣời dùng đầu cuối (end user application) với vai trò các cổng phát tạm thời (khi dùng xong thì hủy đăng ký) khi kết nối với server, nhƣng chúng cũng có thể định danh các dịch vụ có tên đã đƣợc đăng ký bởi một bên thứ ba. Các cổng động/cá nhân cũng có thể đƣợc sử dụng bởi các ứng dụng ngƣời dùng đầu cuối, nhƣng không thông dụng bằng. Các cổng động/cá nhân không có ý nghĩa gì nếu không đặt trong một kết nối TCP. Có 65535 cổng đƣợc chính thức thừa nhận.
4.2 Xây dựng mô hình truyền dữ liệu qua wifi trên phần mềm GNU Radio. 4.2.1 Thiết lập máy chủ.
Hình 3.11 Sơ đồ thiết lập kết nối của máy chủ.
56
• Wav File Source: Lấy dữ liệu của tập tin âm thanh có định dạng Wav.
• Wx GUI FFT Sink: Mô tả phổ của tín hiệu âm thanh.
• Variable: Khai báo giá trị của tần số lấy mẫu.
• Throttle: Điều khiển tốc độ lấy mẫu.
• TCP Sink: Dùng để thiết lập đƣờng truyền. Các tham số trong khối TCP Sink:
Input Type: Kiểu dữ liệu đầu vào. Adrress: Địa chỉ IP máy của bạn. Port: Tên cổng dùng để kết nối.
Mode: Chế độ là máy chủ hay là khách.
Chƣơng trình sẽ không bắt đầu cho đến khi một kết nối TCP đƣợc thiết lập. Vì vậy, phổ tín hiệu không xuất hiện cho đến khi có máy khác kết nối thành công.
4.2.2 Thiết lập máy khách.
Hình 3.12 Sơ đồ thiết lập kết nối của máy khách.
Chức năng của các khối:
Variable: Thiết lập thông số của tần số lấy mẫu. Wx GUI FFT Sink: Mô tả phổ của tín hiệu âm thanh.
57
Audio Sink: Phát tín hiệu âm thanh trên loa của máy tính. Wav File Sink: Ghi tập tín hiệu âm thanh thành một tập tin mới. TCP Source: Thiết lập đƣờng truyền.
Các thông số trong khối TCP Source: Output Type: Kiểu dữ liệu đầu ra. Address: Địa chỉ IP của máy chủ
Port: Tên cổng của máy chủ đã thiết lập.
Mode: Chế độ, chọn Client.
Nếu kết nối TCP thất bại, chƣơng trình sẽ không chạy, và phổ tín hiệu sẽ không xuất hiện.
5 Mô hình thử nghiệm truyền thông tin bí mật qua wifi.
wifi
Hình 3.13 Mô hình thử nghiệm truyền thông tin bí mật qua wifi.
Trƣớc tiên chúng ta nhúng tập tin DHBK.text có nội dung là “ Dai Hoc Bach Khoa Ha Noi” vào tập tin GhiAm.wav đƣợc tập tin sau khi nhúng là: New_10-Jan-
2015_8_51.wav TCP Source Khóa bí mật Audio chứa thông tin bí mật Bộ tách dữ liệu Thông tin bí mật Bộ nhúng dữ liệu Audio gốc Thông tin bí mật Khóa bí mật Audio chứa thông tin bí mật TCP Sink
58
Truyền tập tin New_10_Jan_2015_8_51.wav qua mô hình truyền dữ liệu qua wifi.
Hình 3.14 Truyền tập tin New_10_Jan_2015_8_51.wav.
Bên thu nhận đƣợc tập tin wifi.wav.
Hình 3.15 Bênthu nhận đƣợc tập tin wifi.wav
Sau đó ta tách dữ liệu trong hai tập tin đƣợc kết quả nhƣ sau: