Stego Droid - ứng dụng di động trong truyền thông ẩn mã

13:55 | 18/02/2020

Bài báo này trình bày về phần mềm Stego Droid hoạt động trên hệ điều hành Android. Phần mềm kết hợp thuật toán ẩn mã dựa trên mã sửa sai tuyến tính và mã khối AES truyền thống, để đảm bảo an toàn trong việc truyền thông trên thiết bị di động.

1. Mở đầu

Đã từ lâu, các kỹ thuật mã hóa và ẩn mã được ứng dụng trong việc đảm bảo tính bí mật, toàn vẹn của các thông điệp được truyền tải trên mạng máy tính. Mật mã xử lý các thông điệp theo cách mà chúng không thể hiểu được một cách dễ dàng. Trong khi đó, ẩn mã che giấu các thông điệp để sự tồn tại của chúng không thể bị phát hiện. Hai phương pháp này có thể sử dụng độc lập hoặc kết hợp với nhau một cách linh hoạt. Trong trường hợp kỹ thuật giấu tin thất bại và thông báo được phát hiện, thì thông điệp vẫn có thể đảm bảo được tính bí mật, toàn vẹn, do các phương thức mã hóa được áp dụng.

Có nhiều cách chặn thu và đọc các dữ liệu được truyền tải. Điều đáng nói là các phương thức mã hóa được sử dụng rộng rãi cũng không đảm bảo an toàn tuyệt đối trong giao tiếp. Ví dụ, mã hóa luồng A5/1 được sử dụng để thông tin liên lạc bằng mật mã trong GSM. Cuộc tấn công thám mã vào thuật toán này được ghi nhận năm 2009 [5]. Nó cho phép mở khóa A5/1 trong khoảng thời gian 3-5 phút, bằng cách sử dụng “Bảng cầu vồng có kích thước 2 TB”.

Hiện nay, các nhà sản xuất phần mềm tập trung chủ yếu vào việc sử dụng mật mã. Đây là cách tiếp cận đúng, nhưng vẫn tồn tại các rủi ro mất an toàn thông tin. Bởi biện pháp này sẽ thu hút sự chú ý của các cơ quan nghiệp vụ thám mã liên quan. Điều đó có thể được hạn chế bằng cách kết hợp phương pháp mã mật với phương pháp ẩn mã. Giải pháp này không chỉ bảo mật được thông tin truyền đi, mà còn che giấu được cách thức truyền thông mật.

Bên cạnh đó, sự tiến bộ vượt bậc của công nghệ nhanh chóng thúc đẩy việc thiết kế, chế tạo các thiết bị di động, làm cho chúng có thể thay thế các máy tính cá nhân. Các thiết bị như điện thoại thông minh thuận tiện trong việc trao đổi thông tin. Tuy nhiên liệu việc truyền thông trên các thiết bị này có đảm bảo an toàn?

Bài báo trình bày về phần mềm Stego Droid hoạt động trên hệ điều hành Android. Phần mềm kết hợp thuật toán ẩn mã dựa trên mã sửa sai tuyến tính và mã khối AES truyền thống, để đảm bảo an toàn trong việc truyền thông trên thiết bị di động.

2. Thuật toán ẩn mã

Phần mềm ứng dụng Stegodroid sử dụng thuật toán ẩn mã đã được thiết kế dựa trên sự kết hợp giữa thuật toán LSB và ý tưởng về mã hóa syndrom [10]. Thuật toán này sử dụng mã Hamming – thuộc loại mã sửa sai tuyến tính. Mã sửa sai là thông tin dự phòng được thêm vào chuỗi nhị phân cho phép phát hiện toàn bộ hoặc một phần lỗi và sửa lỗi do nhiễu tạp hoặc do sửa đổi một phần tín hiệu nguồn. Mã sửa sai được sử dụng trong trường hợp thông tin gửi lại rất tốn kém, phức tạp hoặc đôi khi không thể thực hiện. Việc phát hiện và sửa lỗi dựa trên giả định rằng chỉ một số chuỗi bit nhất định nhận được là chính xác.

Việc tạo ra một từ mã n-bit đòi hỏi phải thêm (n-k) bit chẵn lẻ vào từ mã k-bit. Mã này được gọi là mã khối vì các khối dữ liệu nhiều bit được mã hóa đồng thời. Khi các bit bản tin không phải sửa đổi, mã này được gọi là mã hệ thống. Giải mã các mã như vậy chỉ loại bỏ các bit chẵn lẻ được thêm vào trước đó.

Mã khối tuyến tính (n, k) là không gian con k chiều của không gian vectơ n chiều. Do đó, có thể tìm thấy các vectơ độc lập tuyến tính k là cơ sở của không gian mã. Mã tuyến tính (n, k) có thể được xác định duy nhất bởi bất kỳ tập hợp vectơ độc lập tuyến tính k nào tạo thành cơ sở của không gian mã, là cơ sở để tạo ma trận tạo mã Gk × n.

Các từ mã được lấy là kết quả của phép nhân các từ mã của tin nhắn theo ma trận G. Từ mã là một vectơ: c = (c0, c1, · · ·, cn-1), từ mã của tin nhắn là một vectơ m = (m0, m1, · · ·, mk-1).

Mối quan hệ giữa vectơ cm được hiển thị dưới đây:

Mã tuyến tính Hamming là mã chỉnh sửa được xây dựng trên trường GF(2). Ma trận mã Hamming G(7,4) có thể có dạng sau:

Để mã hóa thông điệp  m = 1010, tiến hành thực hiện thao tác:

Kết quả thu được mã vector c = 1011010. Việc phát hiện và sửa sai đòi hỏi sử dụng ma trận chẵn lẻ H. Ma trận chẵn lẻ theo mã Hamming(7,4) có dạng:

Tương đương với hệ phương trình sau:

Ma trận kiểm tra chẵn lẻ cho phép tính toán syndrome s. Syndrome chứa thông tin về vị trí lỗi trong từ mã được gửi đi. Syndrome được tính theo công thức:

Ví dụ, khi nhận được vectơ c = 0110101, quá trình tính toán như sau:

Vectơ sT chứa thông tin về bit bị lỗi. Thông tin này được chỉ ra nhờ sử dụng phép mã hóa endian nhỏ. Trong ví dụ trên, syndrome chỉ ra lỗi sai ở bit thứ 6.

Ẩn mã thường sử dụng phép mã hóa syndrome. Phương pháp này cho phép che giấu một lượng lớn dữ liệu trong ảnh, đồng thời làm giảm độ biến dạng đưa thêm vào. Ví dụ, sử dụng mã Hamming(7,4) cho phép che giấu 3 bit thông tin trong 7 bit của phương tiện mang tin. Bằng cách này, chỉ cần thay đổi giá trị một bit của phương tiện mang tin. Dung lượng (tính bằng bit) của một bitmap tiêu chuẩn có kích thước h tính trên w pixel xấp xỉ bằng:

Để che giấu dữ liệu, cần sửa đổi từ mã sao cho syndrome được tính cho từ mã đã sửa đổi bằng với thông điệp che giấu. Ví dụ, khi muốn che giấu bit 101 trong mã từ 1001001 lần lượt thực hiện các bước sau:

Bước 1: Tính toán syndrome cho từ mã:

Bước 2: Tính toán syndrome s = 010, khác với thông điệp trên cả 3 bit.

Bước 3: Theo hệ phương trình:

đổi ngược lại giá trị bit x7.

Bước 4: Kết quả, từ mã mới có dạng 1001000.

Bước 5: Thực hiện tính lại syndrome:

Do cách thức trình bày bitmap trong Android, trong quá trình che giấu thông tin thường sử dụng bit có giá trị trọng số bé thứ 2 là bit màu xanh da trời của mỗi pixel ảnh. Hình 1 trình bày sơ đồ khối của thuật toán cải biến bit có trọng số thấp (Least significant bit – LSB).

Hình 1. Sơ đồ khối thuật toán cải biến LSB.

3. Thuật toán mật mã

Ứng dụng Stego Droid được phát triển sử dụng mật mã khối đối xứng AES với khóa 128 bit. AES thực hiện 10 vòng chuyển đổi - thay thế. Mỗi trong số chúng bao gồm thay thế sơ bộ, hoán vị ma trận (trộn hàng và trộn cột) và sửa đổi theo khóa. Chế độ được chọn theo yêu cầu của ứng dụng là chế độ liên kết các khối được mã hóa (CBC), sử dụng thông tin phản hồi và tự đồng bộ hóa.

Hình 2. Sơ đồ thuật toán AES

Trong chế độ này, khối văn bản gốc được cộng modulo 2 với bản mã của khối trước. Hiệu quả của nó là sự phụ thuộc vào các khối trước đó. Khối đầu tiên được cộng modulo 2 với giá trị được tạo ngẫu nhiên ban đầu IV. Thuật toán AES được chọn bởi tính ứng dụng rộng rãi cũng như mức độ bảo mật cao được cộng đồng mật mã quốc tế xác nhận.

4. Triển khai thực hiện

Ứng dụng Stego Droid được xây dựng dựa trên Android Developer Tools (ADT) v22.3.0-887826. ADT là một tiện ích bổ sung cho môi trường Eclipse được thiết kế các ứng dụng cho hệ điều hành Android. ADT mở rộng chức năng của môi trường Eclipse bằng cách tạo ra các thiết kế mới cho hệ điều hành Android, tạo giao diện người dùng, thêm các gói dựa trên API và dễ dàng kiểm tra các ứng dụng đã được tạo. Các ứng dụng có thể hoạt động trên trình giả lập hoặc trên thiết bị vật lý được kết nối với ADT.

Hình 3. Giao diện màn hình chính của ứng dụng Stegodroid

Ứng dụng Stego Droid có thể hoạt động trên thiết bị sử dụng hệ điều hành Android phiên bản 3.2 trở lên. Để hoạt động đúng, cần có quyền truy cập ghi và đọc bộ nhớ ngoài, cũng như quyền truy cập vào camera được tích hợp trong thiết bị. Do những hạn chế của API Android, cần phải sử dụng thêm hai thư viện bên ngoài. Đầu tiên, thư viện aFileDialog được sử dụng để hiển thị hộp thoại cho phép chọn tệp chứa thông tin. Thư viện cũng cho phép chọn các thư mục, áp dụng các bộ lọc lựa chọn bằng cách sử dụng các biểu thức thông thường và tạo các tệp và thư mục mới. Thư viện thứ hai được sử dụng là mCrypt. Thư viện này cho phép sử dụng triển khai thuật toán AES hiện có trong chế độ CBC, đặc biệt ứng dụng vào mã hóa các luồng văn bản.

Hình 4. Cửa sổ giao tiếp chọn tệp tin

Ứng dụng Stego Droid cho phép thêm một tin nhắn với 3 lựa chọn: Các tệp có sẵn (trong bộ nhớ của thiết bị); Hình ảnh có sẵn (trong bộ sưu tập) và ảnh chụp bằng camera tích hợp trên thiết bị. Tệp kết quả được lưu ở định dạng PNG trong bộ nhớ của thiết bị.

5. Kết quả thu được

Để đánh giá chính xác hoạt động của ứng dụng Stego Droid sử dụng điện thoại di động Samsung GT-i9505. Ảnh cat.png [1] được chọn làm phương tiện mang tin, trong đó che giấu 3597 bit thông tin.

Hình 5, 6: Che giấu thông tin trong phương tiện mang tin

Hình ảnh thu được theo cách này đã bị phân tích ẩn mã bằng thị giác và thuật toán RS. Phân tích ẩn mã bằng thị giác cho phép phát hiện các biến dạng được đưa vào hình ảnh bằng các thuật toán như LSB.

Hình 7: LSB của ảnh tích hợp sẵn thông tin che dấu

Hình 8: LSB của ảnh gốc

Phân tích các hình ảnh trên không thể đưa ra bất kỳ kết luận nào về thông điệp được che giấu. Hình ảnh cũng được thực hiện thám ẩn mã bằng thuật toán RS. Với mục đích này, phần mềm StegSecret đã sử dụng [2]. Bảng 1 mô tả các kết quả đã thu được.

Bảng 1: Kết quả phân tích bằng thuật toán RS

Từ các giả định của thuật toán RS [3,4], có thể giả định rằng hình ảnh mang nội dung che giấu khi số pixel thay đổi lớn hơn 5%. Còn trường hợp thuật toán được sử dụng trên cho kết quả bằng 0,057% cho màu xanh lam (thấp hơn 100 lần). Ngoài ra, hình ảnh gốc và hình ảnh chứa thông tin che giấu được kiểm định đánh giá bằng phép kiểm định Chi-bình phương [5]. Hình 9 và 10 mô tả xác suất đính kèm thông tin trong ảnh gốc và ảnh chứa thông tin che giấu (stegogram) tương ứng. Có thể thấy rằng cả hai sơ đồ gần như giống hệt nhau.

Hình 9, 10: Kết quả kiểm định đánh giá bằng phép kiểm định Chi-bình phương đối với ảnh gốc và ảnh chứa thông tin ẩn mã.

Có thể kết luận rằng, hình ảnh sau khi được ẩn mã không có sự khác biệt. Vì vậy, việc truyền tin mật chứa 3597 bit thông tin được che giấu sẽ không gây chú ý tới các nhà thám ẩn mã. Điều đáng nói, 3597 bit thông tin tương ứng với một tin nhắn có độ dài 514 ký tự.

6. Kết luận

Ứng dụng Stego Droid trình bày cho phép người dùng các thiết bị di động hoạt động dưới sự kiểm soát của hệ điều hành Android thực hiện truyền tin mật bằng ẩn mã. Việc sử dụng thuật toán ẩn mã cho phép giảm số lượng biến đổi cần tích hợp [10] và giảm đáng kể việc tích hợp dữ liệu cần che giấu vào phương tiện mang tin. Đồng thời làm tăng độ bảo mật nhờ sử dụng thuật toán mã hóa AES-128, ngay cả khi các nhà thám ẩn mã chặn, thu được dữ liệu che giấu thì cũng không thể giải mã khôi phục thông tin được truyền.

Trong giai đoạn phát triển tiếp theo của ứng dụng, các nhà nghiên cứu tập trung vào việc đề xuất một thuật toán ẩn mã cho các định dạng nén lossy dữ liệu các tệp đồ họa, cũng như khả năng truyền trực tiếp các tệp được tạo qua e-mail, bluetooth, NFC hay mạng xã hội.

Tài liệu tham khảo

[1]. http://meinkat.files.wordpress.com/2013/09/cat using computer.jpg dostęp 16.07.2014.

[2]. http://stegsecret.sourceforge.net/dostęp 11.07.2014.

[3]. J. Fridrich, M. Goljan, Rui Du Detecting LSB steganography in color, and grayscale images. IEEE Multimedia 8 pp 22-28, 2001.

[4]. J. Fridrich, M. Goljan, D. Hogea, D. Soukal, Quantitative steganalysis of digital images: estimating the secret message length. Multimedia Systems 9, pp 288-302, 2003.

[5]. N. Karsten, Ch. Paget, “GSM: SRSLY?”, Chaos Communication Congress, 21.01.2010.

[6]. W. Mochnacki, Kody korekcyjne i kryptografia, Oficyna Wydawnicza Politechniki Wrocławskiej, 2000.

[7]. J. Gawinecki, J. Szmidt, “Zastosowanie ciał skończonych i krzywych eliptycznych w kryptografii”, Wydawnictwo Instytutu Matematyki i Badań Operacyjnych, WAT, 1999.

[8]. I. J. Cox, M. L. Miller, J. A. Bloom, J. Fridrich, T. Kalker, ”Digital Watermarking and Steganography” (Second Edition), Morgan Kaufmann, 2008.

[9]. K. Kaczyński, Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów. Biuletyn WAT, Vol. LXII, Nr 4, 2013, pp. 267–277.

[10]. K. Kaczyński, Steganografia z wykorzystaniem optymalnych kodów liniowych, Nowe techniki badań kryminalistycznych a bezpieczeństwo informacji, Wyd. PWN 2014, ISBN 978-83-01-17890-1, str. 110–120.