Một phương pháp mã hóa phân vùng dữ liệu trên máy tính nhúng (Phần II)

16:00 | 27/07/2023 | GP MẬT MÃ
Trong phần I của bài báo, nhóm tác giả đã trình bày về các phương pháp mã hóa dữ liệu lưu trữ, trong đó tập trung về giải pháp mã hóa phân vùng bằng dm-crypt và LUKS trên máy tính nhúng, cụ thể là Raspberry Pi. Với những ưu điểm của việc thiết kế module dưới dạng tách rời, trong phần II này, nhóm tác giả sẽ trình bày cách xây dựng module Kuznyechik trong chuẩn mật mã GOST R34.12-2015 trên Raspberry Pi, từ đó xây dựng một phần mềm mã hóa phân vùng lưu trữ video từ camera sử dụng thuật toán mật mã mới tích hợp.

TÍCH HỢP THUẬT TOÁN MẬT MÃ KUZNYECHIK TRONG MÃ HÓA PHÂN VÙNG TRÊN RASPBERRY PI

Xây dựng module Kuznyechik

Với những ưu điểm của việc thiết kế module dưới dạng tách rời, nhóm tác giả đã xây dựng một module Kuznyechik trong chuẩn mật mã GOST R34.12- 2015 để tích hợp vào ứng dụng mã hóa phân vùng. Kuznyechik là một thuật toán mật mã sử dụng cấu trúc mạng thay thế hoán vị SPN [3]. Nó có độ dài khối là 128 bit, độ dài khóa là 256 bit, tương tự với thuật toán AES.

Để kernel tải một module, một tiến trình “Modprobe” cùng với các tham số của module đó sẽ được thực thi. Module sẽ được biên dịch và đóng gói dưới dạng tệp tin đuôi *.ko. Một module có thể kèm theo nhiều module khác phụ thuộc và kernel sẽ phải tải lần lượt các module phụ thuộc trong tệp modules. dep để có thể khởi tạo module được thêm vào. Nhóm tác giả đã sử dụng một chương trình DKMS (Dynamic Kernel Module Support) để hỗ trợ thực hiện những công việc trên.

Ngoài những hàm thực thi như khởi tạo khóa con, mã hóa, giải mã của thuật toán Kuznyechik, cần khai báo những tham số đặc trưng của thuật toán mật mã để trình biên dịch có thể tạo ra tệp kuznyechik.ko.

Tệp tin dkms được biểu diễn như sau:

Sau khi biên dịch, module thực thi thuật toán được đóng gói dưới dạng tệp kuznyechik.ko và ghi vào đường dẫn /libs/modules/($linux-header). Thử nghiệm mã hóa phân vùng bằng thuật toán Kuznyechik, thay đổi tham số cipher là “kuznyechik” trong câu lệnh mã hóa là:

Kết quả sau khi mã hóa phân vùng, thuật toán mật mã sử dụng được đổi thành Kuznyechik. Hình 1 biểu diễn một LUKS header sau khi tích hợp module Kuznyechik, những thiết bị chưa cài module này không thể đọc được phân vùng đã mã hóa. Như vậy, chúng ta có thể tích hợp thêm hoặc tùy biến các thuật toán mật mã khác vào thiết bị để tăng độ bảo mật cho ứng dụng.


Hình 1. Tích hợp thuật toán kuznyechik trong chuẩn GOST R34-12.2015

Ứng dụng thuật toán Kuznyechik vào mã hóa phân vùng lưu trữ video từ camera và kết quả

Trong nội dung tiếp theo, nhóm tác giả trình bày một ứng dụng sử dụng giải pháp mã hóa phân vùng lưu trữ để bảo vệ dữ liệu từ camera. Trên thực tế những video từ camera thường được lưu trữ ở dạng rõ và bất kỳ ai cũng có thể truy cập, tuy nhiên trong một số địa điểm đặc thù như phòng thí nghiệm, khu vực nhạy cảm hoặc nhật ký thử nghiệm, việc bảo vệ những dữ liệu video này là rất cần thiết. Sơ đồ khối của ứng dụng được trình bày như Hình 2. Trong đó gồm các thành phần sau:

- Khối xử lý chính Raspberry Pi 3: Thực hiện những tác vụ nén video dưới chuẩn video thông dụng như H264; mã hóa và giải mã dữ liệu từ camera.

- Module Camera: Có thể sử dụng Camera giao tiếp CSI hoặc USB qua Raspberry Pi.

Hình 2. Sơ đồ khối của ứng dụng camera

- Thiết bị lưu trữ: Có thể là USB hoặc MicroSD, tốc độ mã hóa/giải mã của ứng dụng sẽ phụ thuộc một phần vào tốc độ ghi/đọc trên thiết bị lưu trữ.

Hình 3. Kết quả sau khi mã hóa phân vùng

Khóa của quá trình mã hóa, giải mã là một mật khẩu được trao đổi bí mật, hoặc là một keyfile tránh trường hợp người dùng quên mật khẩu. Video được nén theo chuẩn H264, băng thông sử dụng của chuẩn nén này chỉ xấp xỉ 1,5 Mbit/s [6], vì vậy tốc độ mã hóa của thuật toán mật mã trên Raspberry Pi không cần quá lớn. Nhóm tác giả lựa chọn thuật toán mật mã là Kuznyechik, chế độ XTS với độ dài khóa là 512 bit.

Kết quả được mô tả trong Hình 3. Ở Hình 3(a) khi kết nối phân vùng đã mã hóa vào Raspberry Pi, máy tính sẽ yêu cầu nhập mật khẩu để đọc phân vùng đó; Hình 3(b) là khi đã mở khóa thành công phân vùng đã mã hóa và có thể truy cập được những video trong phân vùng đã mã, trên phân vùng có biểu tượng đã được mã hóa; Hình 3(c) biểu diễn tốc độ đọc/ghi trực tiếp trên phân vùng mã hóa, xấp xỉ 8 MiB/s, tốc độ này hoàn toàn phù hợp để ghi video chuẩn nén H.264.

Kết quả cho thấy thiết bị hoạt động tốt với ứng dụng camera, phân vùng lưu trữ không thể truy cập nếu không có mật khẩu hoặc keyfile, tốc độ mã hóa/giải mã phù hợp với băng thông của video chuẩn nén H.264, thuật toán mật mã được tích hợp vào hoạt động ổn định và tương thích. Điều này cho thấy khả năng tùy biến cao của phương pháp, qua đó hoàn toàn có thể tích hợp những thuật toán đặc thù vào ứng dụng.

KẾT LUẬN

Trong bài báo này, nhóm tác giả đã đề xuất một phương pháp mã hóa phân vùng trên máy tính nhúng Raspberry Pi sử dụng dm-crypt và LUKS để bảo vệ dữ liệu cho ứng dụng camera, đồng thời tích hợp thêm thuật toán mật mã Kuznyechik trong chuẩn GOST R34.12-2015 lên Raspberry Pi. Kết quả cho thấy giải pháp hoạt động tốt và phù hợp với ứng dụng mã hóa phân vùng dữ liệu camera. Thuật toán mật mã sử dụng là Kuznyechik chế độ XTS, tốc độ đọc/ghi thực tế trên thẻ MicroSD là xấp xỉ 8 MiB/s, video được nén theo chuẩn H.264.

Từ kết quả của giải pháp, hoàn toàn có thể áp dụng trên nhiều ứng dụng bảo mật dữ liệu khác trong những thiết bị thông minh như NAS, dữ liệu cảm biến, tín hiệu điều khiển, tùy thuộc vào yêu cầu về thuật toán mật mã, chế độ hoạt động, nền tảng phần cứng hay tốc độ mã hóa/giải mã của từng ứng dụng.

Tài liệu tham khảo

[1]. NIST Computer Security Division’s, Security Technology Group, “Block cipher modes”. Cryptographic Toolkit. NIST. Archived from the original on November 6, 2012. Retrieved April 12, 2013.

[2]. Shrestha, Muna, “Parallel Implementation of AES using XTS Mode of Operation”, Culminating Projects in Computer Science and Information Technology 21, 2018.

[3]. V. Dolmatov, Ed., “GOST R 34.12-2015: Block Cipher “Kuznyechik””, Research Computer Center MSU, 2016.

[4]. Clemens Fruhwirth, “LUKS1 On-Disk Format Specifiation”, 2018.

[5]. Matthew V. Ball, Cyril Guyot, James P. Hughes, Luther Martin & Landon Curt Noll, “The XTS-AES Disk Encryption Algorithm and the Security of Ciphertext Stealing”, Cryptologia, Volume 36, 2012 - Issue 1, 2012.

[6]. Wenger, “RTP Payload Format for H.264 Video”, RFC 3984, 2005. [7]. Mike Peters, “Encrypting partitions using dm-crypt and the 2.6 series kernel”, dm-crypt Project, 2012.

Nguyễn Ngọc Quỳnh, TS. Nguyễn Chung Tiến, TS. Đỗ Cao Khánh, Học viện Kỹ thuật mật mã

Tin cùng chuyên mục

Tin mới