Một mô hình mới và hiệu quả để đƣa các thông điệp bí mật vào hình ảnh mà không xuất hiện bất kỳ sự thay đổi quan trọng đã đƣợc đề xuất thông qua kỹ thuật giấu tin LSB. Trong mô hình này đã đề cập đến hai giai đoạn an toàn cho việc ẩn thông điệp mật và truyền tải. Sự kết hợp kỹ thuật LSB và thuật toán mã hóa khóa công khai RSA đƣợc sử dụng để có thể có một hình ảnh giấu tin mật an toàn.
Thuật toán RSA giúp cho ngƣời dùng có thể tạo khóa công khai và khóa bí mật dựa trên việc cung cấp hai số nguyên tố. Cặp khóa này có thể đƣợc hệ thống lƣu trong các tập tin hoặc đƣợc ngƣời sử dụng nhớ chúng. Thuật toán RSA đƣợc sử dụng để tạo mức độ bảo mật cao cho thông điệp mật. Thông tin đã mã hóa đƣợc nhúng vào hình ảnh gốc. Tính năng này cho phép kỹ thuật LSB tránh đƣợc Steganalysis. Sự kết hợp của chúng cho phép truyền tải thông tin một cách an toàn hơn các kỹ thuật trƣớc đó.
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
Trên thực tế, phƣơng pháp kết hợp kỹ thuật LSB và thuật toán RSA của mô hình ẩn mã Steganography đã đƣợc cải thiện mức độ an ninh đáng kể. Trong tƣơng lai, ứng dụng này sẽ cải thiện đƣợc chức năng của nó, từ đó hỗ trợ ẩn dữ liệu trong các tập tin video hoặc định dạng tập tin khác không chỉ trong môi trƣờng ảnh số hóa.
Tuy vậy, kỹ thuật LSB là đơn giản nhất để ẩn hay nhúng một thông điệp vào trong một hình ảnh chứa. Thông điệp đƣợc nhúng với kỹ thuật ánh xạ trình tự trong các điểm ảnh của ảnh chứa. Mặc dù LSB ẩn thông điệp theo cách mà con ngƣời không cảm nhận đƣợc, nó vẫn có thể để cho đối thủ lấy thông điệp đã nhúng do sự đơn giản của kỹ thuật này. Trong khi đó RSA chỉ góp phần mã hóa dữ liệu, bởi vậy, kẻ tấn công có thể trích xuất thông điệp nếu họ nghi ngờ có tồn tại thông tin bí mật đã đƣợc nhúng trong hình ảnh. Với việc nhúng theo kỹ thuật ánh xạ trình tự nhƣ vậy, kẻ tấn công có thể dễ dàng trích xuất đƣợc thông điệp bằng cách lấy các điểm ảnh tuần tự bắt đầu từ điểm ảnh đầu tiên của bức ảnh. Tuy vậy, kẻ tấn công chỉ thu đƣợc bản mã hóa của thông điệp, chính RSA đã gây khó khăn cho kẻ tấn công trong việc đọc nội dung của thông điệp, từ đó, góp phần tăng độ an toàn của dữ liệu.
Mô hình Steganography sử dụng kỹ thuật LSB kết hợp thuật toán RSA cũng không tránh khỏi các cuộc tấn công phát hiện, tấn công khi biết ảnh chứa hay một cuộc tấn công phá hủy đơn giản bằng cách thay các bit có trọng số thấp nhất LSB bằng các bit rác. Tuy nhiên, mô hình này vẫn đạt đƣợc độ an toàn trong việc giấu và truyền tải thông tin mật một cách đáng kể và hiệu quả hơn các kỹ thuật trƣớc đó.
Tổng kết chƣơng 2:
Trong chƣơng này luận văn đã tìm hiểu về cấu trúc của hình ảnh Bitmap và thuật toán RSA. Nghiên cứu quá trình giấu tin và tách tin trên ảnh Bitmap. Từ đó đề xuất mô hình kết hợp giữa kỹ thuật LSB và thuật toán RSA để
giấu tin trong ảnh.
Đánh giá thuật toán nhƣ độ phức tạp hay tính an toàn, bảo mật của thông tin đƣợc giấu.
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
CHƢƠNG 3. TRIỂN KHAI CHƢƠNG TRÌNH THỬ NGHIỆM 3.1. Mục đích, yêu cầu
Mục đích của chƣơng này trong luận văn là xây dựng một chƣơng trình ứng dụng giúp cho ngƣời dùng có thể trao đổi thông tin bí mật bằng cách che giấu dữ liệu mật trong các file ảnh trong quá trình truyền tải dữ liệu.
Chƣơng trình đảm bảo đƣợc một số yêu cầu nhƣ sau:
- Mã hóa và giải mã thông tin mật trƣớc khi giấu vào file ảnh bằng thuật toán RSA làm tăng mức độ bảo mật thông tin mật trong quá trình trao đổi thông tin.
- File ảnh sau khi đã giấu tin mật không bị thay đổi về kích thƣớc và khó có thể nhận ra sự thay đổi bằng mắt thƣờng.
3.2. Yêu cầu về cấu hình hệ thống
Đƣợc ứng dụng trên các môi trƣờng, nền tảng phổ biến là các hệ điều hành thông dụng nhƣ: Windows XP, Windows7…
Ngôn ngữ đƣợc sử dụng để xây dựng ứng dụng giấu tin trong ảnh Bitmap sử dụng kỹ thuật LSB kết hợp với thuật toán RSA là C#. NET, một ngôn ngữ đƣợc phát triển bởi Microsoft dựa trên C++ và Java. Đây là ngôn ngữ mạnh đƣợc sử dụng nhiều trong thời điểm hiện nay.
3.3. Lựa chọn định dạng file ảnh trong thực nghiệm
Giấu tin trong file ảnh đã đƣợc một số hãng phầm mềm phát triển phục vụ cho việc trao đổi tin mật. Những phần mềm này có thể giấu tin trong nhiều định dạng file ảnh khác nhau, có thể kể ra một số phần mềm nhƣ:
Tên phần mềm Định dạng file chứa
Vaulty JPG
Hide pictures – KeepSafe
Vault JPG
Trong quá trình tìm kiếm phƣơng pháp giấu không làm thay đổi chất lƣợng hình ảnh. Luận văn đã lựa chọn file hình ảnh có định dạng BMP. Nhƣ đã nêu ở Chƣơng 1, đây đƣợc coi là một định dạng “không mất dữ liệu” - không bị nén.
Trong chƣơng trình thực nghiệm file hình ảnh và tin mật đƣợc mã hóa RSA biến đổi thành chuỗi các bít, sau đó chuỗi bít tin mật đƣợc giấu và chuỗi bit file BMP.
3.4. Sơ đồ chức năng chƣơng trình
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
Chƣơng trình có 4 chức năng chính:
(1). Tạo khóa RSA:
Chức năng này yêu cầu ngƣời dùng chọn 2 số nguyên tố p và q đủ lớn. Sau đó chƣơng trình sẽ tính toán ra 2 cặp khóa (cặp khóa công khai và cặp khóa bí mật) để phục vụ cho việc mã hóa và giải mã thông điệp.
(2). Giấu tin mật:
Để giấu tin mật chƣơng trình yêu cầu ngƣời dùng nhập vào 3 thông tin: - File ảnh bitmap cần giấu.
- Cặp khóa công khai (2 giá trị n và e). - Chuỗi thông điệp cần giấu.
Trƣớc khi thực hiện giấu tin chƣơng trình sẽ yêu cầu ngƣời dùng chọn đƣờng dẫn để lƣu file ảnh chứa thông điệp. Và mã hóa thông điệp hiển thị lên giao diện ngƣời dùng.
(3). Trích rút tin mật:
Chƣơng trình yêu cầu ngƣời dùng nhập vào 2 thông tin: - Cặp khóa bí mật (n, d).
- File ảnh chứa tin mật.
Sau khi tiến hành trích rút tin mật chƣơng trình cho ra kết quả: - Bản mã sau khi trích rút đƣợc từ file ảnh chứa tin mật.
- Bản rõ sau khi đƣợc giải mã từ bản mã.
(4). So sánh, đánh giá:
Ngƣời dùng sẽ đƣợc nhận biết và so sánh:
- File ảnh gốc không mang tin và ảnh đã đƣợc giấu tin.
3.5. Sơ đồ hoạt động của chƣơng trình - Quá trình giấu tin - Quá trình giấu tin
Hình 3.2. Sơ đồ hoạt động của quá trình giấu tin
Thông điệp Mã hóa RSA Bản mã Ảnh bitmap 24bit Kỹ thuật nhúng LSB Ảnh bitmap 24bit chứa thông điệp Cặp khóa công khai (n, e) Internet Ngƣời gửi
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
Quá trình giấu tin đƣợc thực hiện nhƣ sau:
- Ngƣời nhận thông điệp gửi cặp khóa công khai cho ngƣời gửi bằng một kênh thông tin an toàn nào đó.
- Sau khi ngƣời gửi thông điệp nhận đƣợc cặp khóa công khai sẽ tiến hành giấu thông điệp vào một ảnh bitmap 24 bit, chƣơng trình sẽ thực hiện qua 2 bƣớc nhƣ sau:
Bước 1: Mã hóa thông điệp:
Khi chƣơng trình nhận đƣợc chuỗi sẽ tiến hành mã hóa bằng khóa công khai theo thuật toán RSA thu nhận đƣợc bản mã.
Bước 2: Giấu thông điệp:
Với bản mã sau khi đã đƣợc mã hóa chƣơng trình tiến hành giấu vào ảnh Bitmap 24bit bằng kỹ thuật LSB.
Sau tiến trình mã hóa thông điệp và giấu bản mã vào ảnh bitmap 24 bit. Ngƣời gửi thông điệp có thể yên tâm gửi bức ảnh chứa thông điệp lên internet cho ngƣời nhận.
- Quá trình trích rút tin
Hình 3.3. Sơ đồ hoạt động của quá trình trích rút tin
Thông điệp Giải mã RSA Bản mã Kỹ thuật trích rút LSB Ảnh bitmap 24 bit chứa thông
điệp
Cặp khóa bí mật (n,d)
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
Quá trình nhận thông điệp bên ngƣời nhận: Ngƣời nhận thông điệp nhận bức ảnh từ internet sau đó tiến hành trích rút và giải mã từ ảnh đã nhận từ ngƣời gửi nhƣ sau:
Bƣớc 1: Ngƣời nhận nhập ảnh bitmap 24 bit vào chƣơng trình và sử dụng cặp khóa bí mật của mình đƣa vào chƣơng trình để chƣơng trình tiến hành trích rút thông điệp.
Bƣớc 2: Chƣơng trình tiến hành trích rút từ file ảnh bitmap 24 bit bằng kỹ thuật LSB. Thu đƣợc bản mã.
Bƣớc 3: Chƣơng trình thực hiện giải mã bản mã bằng thuật toán RSA. Kết quả thu đƣợc thông điệp ban đầu của ngƣời gửi.
3.6. Thuật toán RSA, giấu tin và trích rút tin theo kỹ thuật đề xuất
Thuật toán đƣợc triển khai dựa theo kỹ thuật Mã hóa LSB (Least Significant Bít) và thuật toán RSA để mã hóa chuỗi thông điệp trƣớc khi đƣợc giấu vào ảnh Bitmap.
Nhƣ đã trình bày ở phần mở đầu và Chƣơng 2. Thuật toán giấu tin mà luận văn lựa chọn là sử dụng việc biến đổi bít ít quan trọng nhất của 1 pixel trên file ảnh để thực hiện che giấu thông tin mật.
3.6.1. Thuật toán RSA
3.6.1.1. Tạo khóa công khai và khóa bí mật
Input: p, q là 2 số nguyên tố (p khác q)
Output: n, phi_n, d, e
Method:
Tính n = p * q;
Tính phi_n = (p - 1) * (q - 1);
Chọn e sao cho 1<e<phi_n và là số nguyên tố cùng nhau với phi_n Tính d sao cho d*e ≡ 1 (mod phi_n(n))
3.6.1.2. Thuật toán mã hóa
Thuật toán mã hóa RSA thực hiện khi đã nhập vào 1 chuỗi ký tự và chuyển thành mảng các giá trị của bảng mã ký tự tƣơng ứng vào 1 mảng số nguyên. Lúc này chúng ta sẽ tiến hành mã hóa cho từng phần tử mảng số nguyên. Sau khi mã hóa xong ta đƣợc mảng số nguyên mới và tiến hành
Input: Megs có kiểu dữ liệu chuỗi. (Bản rõ). n, e: Cặp khóa công khai
Output: Megs‟ có kiểu dữ liệu chuỗi. (Bản mã).
Method:
Lặp từ đầu đến hết chuỗi Megs (Megs. Length) và thực hiện: - Chuyển Megs[i] sang bảng mã của ký tự A[i]
- Mã hóa A[i]: B[i]=A[i] ^ e Mod n;
- Chuyển B[i] thành ký tự lƣu vào biến Megs‟
3.6.1.3. Thuật toán giải mã
Thuật toán giải mã RSA thực hiện khi đã trích rút thông tin mật từ file ảnh dƣới dạng mảng các byte. Từ mảng các byte ta chuyển về dạng chuỗi để giải mã.
Input: Megs‟ có kiểu dữ liệu chuỗi. (Bản mã). n, d: Cặp khóa bí mật.
Output: Megs có kiểu dữ liệu chuỗi. (Bản rõ).
Method:
Lặp từ đầu đến hết chuỗi Megs‟ (Megs‟. Length) và thực hiện: - Chuyển Megs‟[i] sang bảng mã của ký tự A[i]
- Mã hóa A[i]: B[i]=A[i] ^ d Mod n
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
3.6.2. Giấu tin
Trƣớc khi giấu tin vào trong ảnh ta xử lý chuỗi đầu đầu vào nhƣ sau: - Chuyển chuỗi thành mảng gồm các phẩn tử kiểu byte
- Thêm 4 byte vào đầu của mảng trên. 4 byte này thể hiện thông tin về độ dài của tin cần giấu vào ảnh.
- Thực hiện xử lý trên file ảnh để thêm 4 byte vào phần đầu Header của file ảnh cần giấu.
Sau khi xử lý chuỗi đầu vào ta tiến hành giấu tin vào trong ảnh nhƣ sau:
Input: message[] byte: 4 byte đầu chứa thông tin độ dài tin cần giấu và các phần tử còn lại là thông tin cần giấu.
inStream: Ảnh ban đầu.
Output: outStream: Ảnh đã đƣợc chứa thông tin mật.
Method:
Biến byteRead; //1byte đọc vào từ instream
Biến byte byteWrite; //1 byte để viết vào outStream
Biến nguyên i = 0; //Chạy trong mảng byte Message
Biến nguyên j = 0; //Chạy từng bít trong 1 byte Mesage [i]
Trong khi ((byteRead = inStream.ReadByte()) != -1) thực hiện:
//Trong khi còn chưa kết thúc Stream
{
byteWrite = (Byte)byteRead; // ép kiểu
Nếu (i < message.Length) // thông điệp vẫn còn
{
byte bit = BitWise.Extract(message[i], j++); // trích 1 bít từ vị trí j từ message[i] ra
BitWise.Replace(ref byteWrite, 0, bit); //thay thế bít vào vị trí 0 LSB
{ j = 0; i++;
} // đã trích hết 8 bít của message[i]
}
viết ra outStream (Có những trường hợp những byte cuối không bị thay đổi)
outStream.WriteByte(byteWrite); }
Nếu (i < message.Length) // i chưa chạy hết mảng message[]
{
Thông điệp quá lớn để giấu }
}
3.6.3. Trích rút
Đầu tiên sẽ phải đọc 4 byte đầu tiên trong phần Data Pixel để lấy về chiều dài của nội dung thông tin giấu trong ảnh. Sau đó mới đọc tiếp nội dung của thông tin đã giấu.
Input: length: Chiều dài của tin mật đọc từ phần header của file ảnh. inStream: Ảnh chứa thông tin mật cần trích rút.
Output: Mảng các phần tử có giá trị 1 byte.
Method: Ta có hàm trích rút thông điệp nhƣ sau:
public static byte[] Decode(FileStream inStream, int length)
// đọc ra 1 mảng byte[] có chiều dài là length trong file stego
{
int byteIndex = 0; // chạy trong mảng byte[]
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
byte[] arrResult = new byte[length]; int byteRead; //byte đọc vào từ file stego
while ((byteRead = inStream.ReadByte()) != -1) {
byte bit = BitWise.Extract((byte)byteRead, 0);
//lấy ra 1 bít vị trí thứ 0;
// thay thế bít này vào trong byte ressult[byteIndex] hiện tại, ở vị trí ByteIndex
BitWise.Replace(ref arrResult[byteIndex], bitIndex++, bit); if (bitIndex == 8) // ta đã thu được 1 byte
{
bitIndex = 0; byteIndex++; }
if (byteIndex == length) break; // lấy đủ nội dung thông điệp
}
return arrResult; }
3.7. Kết quả thực nghiệm
Chƣơng trình gồm có 3 chức năng chính đó là tạo khóa bằng thuật toán RSA, giấu thông tin và trích xuất thông tin.
3.7.1. Chức năng tạo khóa
Chức năng này yêu cầu ngƣời dùng chọn 2 số nguyên tố p và q (p <>q). sau đó chƣơng trình sẽ tính toán và hiển thị thông tin 2 cặp khóa đó là khóa công khai và khóa bí mật nhƣ sau:
Hình 3.4. Quá trình tạo khóa
Sau khi chọn p và q chọn chức năng tạo khóa thì chƣơng trình sẽ tính toán cho ta 2 cặp khóa cần thiết để thực hiện mã hóa và giải mã phục vụ trong quá trình giấu thông tin và trích rút thông tin trong ảnh bằng kỹ thuật LSB.
Ta có giá trị cặp khóa công khai (n, e) = (629, 247) Ta có giá trị cặp khóa bí mật (n, d) = (629, 7)
3.7.2. Chức năng giấu thông tin
Sau khi ta chọn ảnh và nhập thông điệp và chọn cặp khóa công khai để mã hóa thông điệp trƣớc khi thực hiện giấu vào ảnh bằng kỹ thuật LSB. Ta thực hiện nhƣ sau:
(1). Nhập thông điệp: Tran The Anh
(2). Nhập cặp khóa công khai (n, e) = (629, 247) (3). Mở file ảnh để giấu: Penguins.bmp
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
(4). Chọn nút High để thực hiện.
(5). Chƣơng trình sẽ hiện cửa sổ yêu cầu ta lƣu file ảnh sau khi đƣợc giấu và ta đặt tên file ảnh giấu Stego.bmp
Ta có giao diện của chƣơng trình quá trình giấu tin nhƣ sau:
Hình 3.5. Quá trình giấu tin của chƣơng trình
3.7.3. Chức năng trích rút tin mật
Để thực hiện trích rút thông tin trên một file ảnh chƣơng trình yêu cầu ta chọn file ảnh có chƣa thông tin đã đƣợc giấu nếu ảnh không chứa thông điệp chƣơng trình sẽ báo lỗi. Quá trình thực hiện nhƣ sau:
- Ta chọn Tab Unhide của chƣơng trình
- Nhập 2 giá trị của cặp khóa bí mật (n, d) = (629, 7). Giá trị này phải đúng thì quá trình trích rút và giải mã ra đúng bản rõ nhƣ ban đầu nếu sai sẽ hiển thị sai so với thông điệp ban đầu.
- Chọn nút Show Message.
Chƣơng trình sẽ thực hiện và cho kết quả nhƣ sau: