Ẩn mã khóa công khai dựa trên phương pháp so khớp

15:00 | 25/05/2015 | GP MẬT MÃ
Bài báo này đề cập tới một phương pháp gồm hai bước để giấu thông tin mật bằng cách dùng ẩn mã khóa công khai dựa trên phương pháp so khớp. Bước đầu tiên, khóa bí mật (stego-key) phải được chia sẻ giữa hai bên liên lạc thông qua một kênh không an toàn bằng cách áp dụng giao thức trao đổi khóa Diffie Hellman. Tiếp sau đó người gửi dùng khóa bí mật stego-key để chọn các điểm ảnh được dùng để giấu. Mỗi một điểm ảnh được chọn để giấu có thể giấu được 8 bit dữ liệu nhờ phương pháp so khớp. Phương pháp này hiệu quả hơn so với phương pháp chèn bit ít quan trọng nhất (LSB – Least Signifieant Bit).

1. Giới thiệu

Các kỹ thuật được sử dụng để đảm bảo an toàn cho việc truyền tin có thể kể đến như: kỹ thuật mật mã (cryptography), kỹ thuật ẩn mã (steganography)… Mật mã là kỹ thuật che giấu nội dung của thông tin, trong khi ẩn mã là kỹ thuật che giấu sự tồn tại của thông tin. Các thông tin được mã hóa là những thông tin có giá trị. Những thông tin này là điểm thu hút sự quan tâm của kẻ tấn công. Do vậy ngoài việc giấu nội dung thông tin thì việc che giấu đi sự tồn tại của nó là rất quan trọng để tránh sự thu hút kẻ tấn công trong quá trình truyền tin. 


Hình 1: Giao thức ẩn mã sử dụng với tệp tin ảnh 

Ẩn mã thường che giấu thông tin dưới dạng văn bản bên trong các tập tin. Tuy nhiên, hiện nay các tập tin ảnh được sử dụng để che giấu thông tin là phổ biến nhất. 

2. Phương pháp LBS

Phương pháp LSB là phương pháp quan trọng và phổ biến nhất trong kỹ thuật ẩn mã. Nó là một phương pháp đơn giản để che giấu một số lượng đáng kể các thông tin trong một tập tin đa phương tiện. Thông thường hệ thống máy tính hiện đại sử dụng 8-bit (màu xám), 24-bit (BMP) hoặc các tập tin 32-bit (CMYK) để lưu trữ các tập tin hình ảnh kỹ thuật số. Hình ảnh 24-bit thường được sử dụng trong phương pháp LSB để ẩn các thông tin bí mật. Tuy nhiên, để che giấu thông tin trong hình ảnh bằng cách sử dụng LSB, mỗi byte của một hình ảnh 24-bit có thể lưu trữ 3-bit trong mỗi điểm ảnh. Quá trình này cần một khóa bí mật được gọi là stego-key. Stego-key được sử dụng để lựa chọn các điểm ảnh. Các điểm ảnh được chọn sau đó sẽ được sử dụng để nhúng các thông tin bí mật nhị phân.

Ví dụ (hình 3), chữ "A" với giá trị nhị phân "10000011" có thể được nhúng trong ba điểm ảnh (9 byte) với giá trị nhị phân sau (bảng1):

Điểm ảnh

Blue

Green

Red

Điểm ảnh 1

Điểm ảnh 2

Điểm ảnh 3

00100111

00100111

11001000

11101001

11001000

00100111

11001000

11101001

11101001

Bảng 1: Các giá trị nhị phân cho 3 điểm ảnh của file ảnh 24 BMP trước khi nhúng


Hình 2: Ảnh 24 bit

Chèn các giá trị nhị phân cho chữ "A" trong ba điểm ảnh được chọn sẽ cho kết quả trong bảng 2: có 8 bit thực sự được sử dụng trong việc thực hiện ẩn mã, nhưng chỉ có 3 bit đã được thay đổi trong ví dụ này. Trong phương pháp LSB, dữ liệu có thể được nhúng trong các bit ít quan trọng nhất, hoặc bít quan trọng thứ hai, thứ ba mà hệ thống trực quan của con người không thể phân biệt sự thay đổi nhỏ này.

Điểm ảnh

Blue

Green

Red

Điểm ảnh 1

Điểm ảnh 2

Điểm ảnh 3

00100111

00100110

11001000

11101001

11001000

00100111

11001000

11101000

11101001

Bảng 2: Các giá trị nhị phân cho 3 điểm ảnh của tập tin ảnh 24 PMB sau khi nhúng

Phần dưới đây sẽ trình bày một cách tiếp cận mới đó là ẩn mã khóa công khai dựa trên phương pháp so khớp để ẩn các thông tin bí mật bên trong file ảnh 24-bit. Trong phương pháp này, các stego-key được tạo ra bằng cách áp dụng giao thức trao đổi khóa công khai DiffieHellman.

3. Ẩn mã khóa công khai dựa trên phương pháp so khớp

Phương pháp này gồm hai bước:

- Bước 1: thực hiện chia sẻ khóa stego-key giữa hai bên muốn trao đổi thông tin bằng cách dùng giao thức trao đổi khóa Diffie-Hellman (hình 3). Kết thúc của quá trình trao đổi khóa này Alice và Bob sẽ có chung một khóa bí mật là stego-key.


Hình 3: Giao thức ẩn mã khóa công khai

- Bước 2: Alice sẽ dùng khóa stego-key để chọn các điểm ảnh được dùng để giấu tin. Mỗi một điểm ảnh được chọn đó sẽ giấu được 8 bit tin dưới dạng nhị phân, dựa vào phương pháp so khớp như bốn trường hợp được nêu dưới đây (bảng 3). 8 bit dữ liệu sẽ được so sánh với các byte của điểm ảnh được chọn, các giá trị red, green, blue lần lượt tạo ra một mảng với 2 giá trị bit nhị phân như 00, 01, 10 và 11.

Trường hợp 1

Nếu 8 bit dữ liệu » Red (8bit)

Khi đó giá trị Red = 8 bit dữ liệu

Trường hợp 2

Nếu 8 bit dữ liệu » Green (8bit)

Khi đó giá trị Green = 8 bit dữ liệu

Trường hợp 3

Nếu 8 bit dữ liệu » Blue (8bit)

Khi đó giá trị Blue = 8 bit dữ liệu

Trường hợp 4

Trong trường hợp khác

Dùng phương pháp LSB

Bảng 3: Bốn trường hợp so khớp các bit

Alice sẽ so sánh để tìm sự giống nhau khi lấy giá trị dữ liệu so với giá trị của màu đỏ (red) (± 7 – giá trị thập phân). Trường hợp 1, nếu hai giá trị này giống nhau khi đó giá trị 0 (00 – giá trị nhị phân) được thiết lập cho mảng. Trường hợp 2, nếu giá trị dữ liệu và giá trị màu đỏ không giống nhau thì khi đó nó sẽ được so sánh với màu xanh lá cây, nếu chúng giống nhau (± 7 – giá trị thập phân) thì mảng được thiết lập là 1 (01 – giá trị nhị phân). Trường hợp 3, nếu giá trị dữ liệu với giá trị màu xanh lá cây không giống nhau thì nó sẽ được so sánh với màu xanh dương. Nếu hai giá trị này giống nhau (± 7 – giá trị thập phân) thì giá trị 2 (10 – giá trị nhị phân) sẽ được thiết lập cho mảng (xem hình 5).


Hình 4: Ẩn mã khóa công khai dựa trên việc so khớp

Cuối cùng, trong trường hợp 4, nếu dữ liệu mật không giống bất cứ giá trị màu nào ở ba trường hợp trên thì phương pháp LSB được dùng để nhúng dữ liệu trong điểm ảnh được chọn. Và giá trị mảng được thiết lập là 3 (11 – giá trị nhị phân). Trong trường hợp này giá trị dữ liệu được phân bố như sau:

- 3 bit đầu tiên của dữ liệu sẽ được thay cho 3 bit ít quan trọng nhất của byte màu đỏ. 

- 3 bit tiếp theo của dữ liệu được thay cho 3 bít ít quan trọng nhất của byte mày xanh lá cây. 

- 2 bit cuối cùng được thay cho 2 bit ít quan trọng nhất của byte màu xanh dương. 


Hình 5: Nhúng bit dữ liệu vào điểm ảnh lựa chọn dùng LSB

Dưới đây là hình minh họa file ảnh cỡ 501x333 được dùng để nhúng dữ liệu bằng phương pháp đã được trình bày ở trên, ảnh trước và sau khi giấu tin.


(ảnh trước khi giấu tin)                              (ảnh sau khi giấu tin)

Hình 6: File hình ảnh 501x333 trước và sau khi thực hiện phương pháp ẩn mã so khớp.


Hình 7: Kết quả cho bốn trường hợp so khớp


Hình 8: So khớp dựa trên LSB

Sự an toàn của phương pháp ẩn mã phụ thuộc vào giao thức trao đổi khóa Diffie - Hellman. Phương pháp này hiệu quả hơn so với LSB, nó có thể giấu một byte dữ liệu trong một điểm ảnh và chất lượng ảnh đầu ra cũng tốt hơn, mắt thường khó nhận biết được sự thay đổi so với ảnh gốc ban đầu.

Tài liệu tham khảo:

[1] Public-key steganography based on matching method; Mohammad Ahmad Alia, Abdelfatah A. Yahya, 2010

[2] Public-key steganography based on modified LSB method; Vivek Jain, Lokesh Kumar, Madhur Mohan Sharma, Mohd Sadiq, Kshitiz Rastogi, April 2012

Tin cùng chuyên mục

Tin mới