Thực hiện thuật toán ChaCha20 - Poly1305 trên phần cứng ứng dụng bảo mật hệ thống IoT

7 4 0
Thực hiện thuật toán ChaCha20 - Poly1305 trên phần cứng ứng dụng bảo mật hệ thống IoT

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài viết Thực hiện thuật toán ChaCha20 - Poly1305 trên phần cứng ứng dụng bảo mật hệ thống IoT thực hiện thuật toán ChaCha20 – Poly1305 trên phần cứng tăng cường ứng dụng bảo mật cho hệ thống IoT (Internet of Thing). Thuật toán này là một hệ mã xác thực dữ liệu liên kết (AEAD – Authenticated Encryption with Associated Data). Trong đó dữ liệu được mã hóa qua thuật toán ChaCha20 là một dạng mã hóa dòng, thuật toán này có nhiều hạn chế về yếu tố bảo mật và xác thực. Mời các bạn cùng tham khảo!

Hội nghị Quốc gia lần thứ 25 Điện tử, Truyền thông Công nghệ Thông tin (REV-ECIT2022) Thực thuật toán ChaCha20 - Poly1305 phần cứng ứng dụng bảo mật hệ thống IoT Nguyễn Tiến Đạt, Nguyễn Vũ Minh Thành, Đỗ Đức Phú, Nguyễn Văn Nhị, Lê Đức Hùng(*) Phịng thí nghiệm DESLAB Khoa Điện tử - Viễn Thông Trường Đại học Khoa học Tự nhiên – ĐHQG TP.HCM (*) Email: ldhung@hcmus.edu.vn Abstract— Trong báo này, nhóm tác giả thực thuật toán ChaCha20 – Poly1305 phần cứng tăng cường ứng dụng bảo mật cho hệ thống IoT (Internet of Thing) Thuật toán hệ mã xác thực liệu liên kết (AEAD – Authenticated Encryption with Associated Data) Trong liệu mã hóa qua thuật tốn ChaCha20 dạng mã hóa dịng, thuật tốn có nhiều hạn chế yếu tố bảo mật xác thực Thuật toán Poly1305 dùng để tạo mã xác thực lần, thuật tốn tích hợp vào với mục đích khắc phục điểm yếu tính bảo mật xác thực thuật tốn ChaCha20 Bài báo trình bày q trình hoạt động kết thuật tốn ChaCha20 – Poly1305 thiết bị mã hóa liệu node hệ thống IoT vi điều khiển ESP32 Máy chủ hệ thống IoT xác thực liệu giải mã liệu q trình xác thực hồn tất liệu gửi đến máy chủ bao gồm thơng tin mã hóa mã xác thực (MAC) Máy chủ nhận liệu tiến hành xác thực thơng tin, q trình xác thực thành cơng máy chủ tiến hành mã hóa liệu nhận từ node Mơ hình ứng dụng thuật tốn Chacha20Poly1305 đề xuất trình bày Hình Hình 1: Mơ hình ứng dụng thuật toán hệ thống IoT Keywords- AEAD, ChaCha20, ChaCha20 – Poly1305, MQTT, Poly1305 II THUẬT TỐN CHACHA20 Thuật tốn ChaCha20 thuật tốn mã hóa dịng (stream cipher) Mơ hình hoạt động thuật tốn bao gồm KSG – Key stream Generator) với ba ngõ vào key (256-bit), “number used one” (192-bit) hay gọi “nonce number” (192-bit) bao gồm liệu ngẫu nhiên “block number” (64-bit) khởi tạo có liệu “00000001” Ngồi có số cố định (Cons) với liệu xếp theo bảng bên dưới, bảng gọi “Cell” I GIỚI THIỆU Trong năm gần đây, mơ hình Internet of Things (IoTs) trở nên phổ biến nhiều lĩnh vực khác Việt Nam Vì nhu cầu bảo mật liệu cho hệ thống IoT trở thành đối tượng nghiên cứu phát triển, node hệ thống IoT xây dựng vi điều khiển nhiều hạn chế hiệu nên thuật toán sử dụng node phải phù hợp với hiệu vi điều khiển Các node hệ thống IoT chưa kết hợp thuật toán bảo mật liệu, liệu mã hóa bị cơng xen chưa có xác thực q trình trao đổi liệu Thuật tốn ChaCha20Poly1305 cung cấp tính mã hóa xác thực liệu (AEAD) cách sử dụng thuật tốn mã hóa dịng (stream cipher) thuật tốn ChaCha20 để mã hóa liệu kết hợp với thuật toán Poly1305 tạo mã xác thực cho tin nhắn (Authentication Message) [1, 2] Thuật toán phù hợp xây dựng vi điều khiển hai thuật toán ChaCha20 Poly1305 thuật tốn mã hóa nhẹ Nhận thấy điều nhóm nghiên cứu nghiên cứu ứng dụng hệ thống IoT thực tế bao gồm node máy chủ (Server) Các node hệ thống IoT giữ vai trò bên gửi (Trasmitter), ISBN 978-604-80-7468-5 Bảng Định dạng “Cell” 61707865 3320646e 79622d32 6b206574 key key key key key key key key block nonce nonce nonce Bộ KSG tạo output key có 512-bit (k1, k2, k3,…) để tiến hành mã hóa liệu Q trình vịng lặp 20 vịng thực phép tốn “Quarter Round”, phép tốn thực sau QUARTERROUND(a, b, c, d) = += ; ^ = ; ≪ = 16 += ; ^ = ; ≪= 12 (1) += ; ^ = ; ≪ = += ; ^ = ; ≪ = 453 Hội nghị Quốc gia lần thứ 25 Điện tử, Truyền thông Công nghệ Thông tin (REV-ECIT2022) cụ thể ta dựa vào Bảng để thực phép toán QUARTERROUND(0, 4, 8, 12) ta thực Trong đó, “+ ”là phép cộng số theo modulo 2^32, “^” phép XOR, “≪” phép dịch trái Các tham số “a, b, c, d” vị trí liệu “Cell”, phép toán nêu với tham số giá trị vị trí đánh dấu “*” Bảng bên dưới: Bảng Đánh dấu số thứ tự phép toán QUARTERROUND *Cons Cons Cons Cons *key key key key *key key key key *block nonce nonce nonce III THUẬT TỐN CHACHA20-POLY1305 Thuật tốn Poly1305 dùng tạo mã xác thực lần, thuật tốn lấy khóa lần (One-time key) có độ dài 32-bit liệu tin nhắn để tạo mã xác thực cho tin nhắn Chức Poly1305 khắc phục hạn chế tính bảo mật xác thực thuật tốn mã hóa dịng đơn giản ChaCha20 Mơ hình hoạt động thuật tốn ChaCha20-Poly1305 mơ tả Hình bên sau Mỗi vịng thực phép tốn “Quarter Round” bao gồm vịng thực theo cột vòng thực theo đường chéo Hình định nghĩa vị trí theo cột (bên trái) đường chéo (bên phải), đồng thời tham số đầu vào (a1, b1, c1, d1), (a2, b2, c2, d2), (a3, b3, c3, d3), (a4, b4, c4, d4) cho phép tốn QUARTERROUND Hình Định nghĩa vị trí theo cột (bên trái) đường chéo (bên phải) trình (1), phép tốn Từ phương QUARTERROUND, định nghĩa cột Hình 2, vịng q trình tạo keystream có bước sau đây: - QUARTERROUND(0, , 8, 12) - QUARTERROUND(1, , 9, 13) - QUARTERROUND(2, , 10, 14) - QUARTERROUND(3, , 11, 15) - QUARTERROUND(0, , 10, 15) - QUARTERROUND(1, , 11, 12) - QUARTERROUND(2, , 8, 13) - QUARTERROUND(3, , 9, 14) Sau 20 vịng, ta có chuỗi output key 512bit (k0, k1, k2…), nhận liệu đầu vào (m0, m1, m2…) để tạo liệu mã hóa (c0, c1, c2…), output key xor byte với liệu ban đầu theo mơ hình Hình bên Hình Mơ hình hoạt động thuật toán ChaCha20Poly1305 Dữ liệu đầu vào cho thuật tốn Poly1305 gồm có One-time key (256-bit) tách từ thuật toán ChaCha20, chuỗi liệu (Msg) kết hợp từ liệu liên kết (Associated Data) liệu mã hóa (Ciphertext) từ thuật tốn ChaCha20 Chuỗi liệu có định dạng sau: Bảng Định dạng chuỗi liệu đầu vào cho thuật toán Poly1305 Associated Chuỗi liệu liên kết Data - AD thêm vào cho trình tạo mã xác thực pad(AD) Nếu độ dài chuỗi AD không bội số 16 thêm kí tư ‘0’ vào để độ dài bội số 16 Chuỗi pad chứa kí tự ‘0’ Ciphertext - C Chuỗi liệu mã hóa thuật tốn ChaCha20 pad(C) Nếu độ dài chuỗi Ciphertext không bội số 16 thêm kí tư ‘0’ vào để độ dài bội số 16 Chuỗi pad chứa kí tự ‘0’ len(AD) Độ dài chuỗi AD len(C) Độ dài chuỗi Ciphertext Hình Mơ hình hoạt động thuật tốn ChaCha20 ISBN 978-604-80-7468-5 454 Hội nghị Quốc gia lần thứ 25 Điện tử, Truyền thông Công nghệ Thông tin (REV-ECIT2022) Bên cạnh One-time Key (r,s) bao gồm phần ‘r’ ‘s’ Trong đó: - s[0 15]: Là chuỗi khóa chứa 16-byte cuối chuỗi khóa từ thuật tốn ChaCha20 - r[0 15]: Là chuỗi khóa chứa 16-byte đầu chuỗi khóa từ thuật tốn ChaCha20 Khác với “s”, “r” phải sửa đổi hay gọi “kẹp” (clamp) theo định dạng sau: o 4-bit đầu r[3], r[7], r[11] r[15] phải xóa ( phần tử “r” thực phép toán AND với chuỗi nhị phân “1111”) o 2-bit cuối r[4], r[8] r[12] phải xóa ( phần tử “r” thực phép toán AND với chuỗi nhị phân “1111 1100”) Ngồi ra, thuật tốn Poly1305 cần số cố định trình thực thuật toán là: =2 −5 =3 biến “acc” lưu lại kết phép toán liệu khác modulo với P Tổng quát trình tạo mã xác thực thuật toán Poly1305 biều diễn Hình sau: liệu tách lưu vào chuỗi Block có định dạng Hình Hình Định dạng chuỗi Block Sau dùng chuỗi Block thực phép toán Hình với số vịng lặp tương ứng, ta cộng kết phép toán (2) cuối lưu “acc” với khóa “s” acc = acc + s (2) Sau liệu đầu Tag thuật toán 16byte cuối lưu “acc” Từ kết MCU-ESP32 có gói liệu có định dạng liệu đầu củ thuật tốn Chacha20-Poly1305 trình bày Hình bên Ngõ hệ thống bao gồm liệu mã hóa (Cipher text), mã xác thực (Tag) header (giá trị tùy chọn) Hình Định dạng liệu đầu thuật toán ChaCha20 – Poly1305 IV KẾT QUẢ Trong phần này, nhóm nghiên cứu tiến hành thực thuật toán ChaCha20-Poly1305 hệ thống IoT dùng vi điều khiển ESP32 Hệ thống IoT xây dựng điều khiển hệ thống làm mát tự động trạm BTS (Base Tranceiver Station) [3, 4] Các node trạm BTS trực tiếp điều khiển trình bật/tắt hệ thống làm mát, bên cạnh đo thơng số nhiệt độ phịng, dịng điện điện hệ thống làm mát sử dụng Sau đó, node tiến hành mã hóa liệu tạo mã xác thực gửi đến máy chủ để xác thực giải mã liệu Nhóm nghiên cứu thực thuật tốn gói liệu thực tế có độ dài 130-byte với liệu “Cell” “Keystream” Các liệu “Cell” “Keystream” trình bày Bảng Kết thực thuật toán ChaCha20-Poly1305 thể Bảng bao gồm Cipher text Tag Thời gian thực thi hệ thống 1865ms, thời gian chấp nhận thực vi điều khiển ESP32 Hình Quá trình tạo mã xác thực Tag Sau chuẩn bị chuỗi liệu đầu vào (Msg) từ liệu mã hóa thơng qua thuật tốn ChaCha20 Associated Data, thuật toán tiến hành khởi tạo liệu cần thiết sau: - r = clamp(ChaCha20_key[0 15]) - s = ChaCha20_key[16 31] - P= 3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB - acc = Do liệu đầu Tag chuỗi liệu 16-byte, ngắn so với chuỗi liệu đầu vào nên thuật tốn thực vịng lặp để tách liệu từ chuỗi đầu, vòng lặp tách 16-byte để thực tính tốn byte cuối Khi tách khỏi chuỗi đầu vào, 16-byte ISBN 978-604-80-7468-5 455 Hội nghị Quốc gia lần thứ 25 Điện tử, Truyền thông Công nghệ Thông tin (REV-ECIT2022) Bảng Dữ liệu “Cell” “Keystream” Cell: 61707865 3320646e 79622d32 6b206574 564e5054 20506861 73652033 20536563 72657420 6b657920 62792054 68616e68 00000001 63727965 7766656e 79622d32 Keystream: 3dae9a13 eadae4d0 d60f0527 51c754fd e1858ae1 e313d7e9 35e55756 05a81e55 46922cd2 455fd242 78b72f95 38717cc2 8ee238c2 35204d4d 321e352a b4862c85 Cell: 3320646e 79622d32 6b206574 20506861 73652033 20536563 6b657920 62792054 68616e68 63727965 7766656e 79622d32 Keystream: 3dae9a13 eadae4d0 d60f0527 51c754fd e1858ae1 e313d7e9 35e55756 05a81e55 46922cd2 455fd242 78b72f95 38717cc2 8ee238c2 35204d4d 321e352a b4862c85 Ciphertext: 0x68, 0xb8, 0xca, 0x58, 0xa6, 0xad, 0x9e, 0xc8, 0x1d, 0x36, 0x3c, 0xe5, 0xd1, 0x76, 0xb1, 0x3e, 0x8d, 0xfe, 0xe4, 0x86, 0x8c, 0xe6, 0x31, 0xd9, 0x66, 0x7b, 0xc7, 0x43, 0x3a, 0x72, 0xdc, 0x64, 0xb5, 0x49, 0xa0, 0x64, 0x78, 0xe2, 0x73, 0x67, 0xf6, 0x5a, 0xc5, 0xa, 0xa7, 0x12, 0x5, 0x9, 0xe0, 0x2, 0xd2, 0xa2, 0x6f, 0x2e, 0x55, 0x47, 0x58, 0x50, 0x70, 0x46, 0xb7, 0xe, 0xbc, 0x84, 0x3f, 0xb8, 0xda, 0x58, 0xbd, 0x94, 0xbf, 0x98, 0x46, 0x71, 0x7a, 0xa4, 0x98, 0x76, 0xfd, 0x61, 0xcd, 0xa8, 0xf1, 0x84, 0x84, 0xa7, 0x76, 0x91, 0x37, 0x23, 0x90, 0x47, 0x30, 0x41, 0xdf, 0x64, 0xa0, 0x42, 0xfb, 0x28, 0x25, 0xf0, 0x65, 0x73, 0xa1, 0x3, 0x95, 0xb, 0xb6, 0x1d, 0x5, 0x4d, 0xb1, 0x1a, 0xd8, 0xbc, 0x7d, 0x7f, 0x5d, 0x15, 0xa, 0x15, 0x3e, 0x12, 0xa5, 0xc, 0xa6, 0x94 Tag: 0xbb, 0xba, 0xac, 0x37, 0x25, 0x68, 0x50, 0x65, 0xd, 0x1c, 0x67, 0xf6, 0xb6, 0xbe, 0x55, 0xf3 Running Time: MCU – ESP32 = 1661 ms Server = 97.38494873046875 ms 61707865 564e5054 72657420 00000001 Bảng Bảng kết mã hóa liệu thực tế Plaintext: {"devID":333,"voltage1":18,"voltage2":227,"curren t1":3840,"current2":22018,"temperature":6493, "temperature_warning":0,"status":74} Ciphertext: Ã ]ơLểơw~

Ngày đăng: 31/12/2022, 13:39