Tải bản đầy đủ (.pdf) (7 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (486.96 KB, 7 trang )

Hội nghị Quốc gia lần thứ 25 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2022)

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
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:
Abstract— Trong bài báo này, nhóm tác giả thực hiện
thuật tố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 tốn
ChaCha20 là một dạng mã hóa dịng, thuật tốn này có
nhiều hạn chế về yếu tố bảo mật và xác thực. Thuật toán
Poly1305 được dùng để tạo mã xác thực một lần, thuật
tốn này được tích hợp vào với mục đích khắc phục các
điểm yếu về tính bảo mật và xác thực của thuật tốn
ChaCha20. Bài báo này trình bày q trình hoạt động và
kết quả của thuật tốn ChaCha20 – Poly1305 tại các thiết
bị mã hóa dữ liệu và các node trong hệ thống IoT trên vi
điều khiển và ESP32. Máy chủ của hệ thống IoT sẽ xác
thực dữ liệu và giải mã dữ liệu khi quá trình xác thực hồn
tất.

liệu gửi đến máy chủ bao gồm thơng tin được mã hóa và
mã xác thực (MAC). Máy chủ nhận dữ liệu sẽ tiến hành
xác thực thông tin, khi quá trình xác thực thành cơng


máy chủ sẽ tiến hành mã hóa dữ liệu nhận được từ các
node. Mơ hình ứng dụng của thuật tốn Chacha20Poly1305 đề xuất được trình bày trong Hình 1.

Hình 1: Mơ hình ứng dụng của thuật toán trong hệ thống
IoT.

Keywords- AEAD, ChaCha20, ChaCha20 – Poly1305,
MQTT, Poly1305.

II. THUẬT TỐN CHACHA20
Thuật tốn ChaCha20 là một thuật tốn mã hóa dịng
(stream cipher). Mơ hình hoạt động của thuật tốn này
bao gồm bộ KSG – Key stream Generator) với ba ngõ
vào là key (256-bit), “number used one” (192-bit) hay
còn gọi là “nonce number” (192-bit) bao gồm các dữ
liệu ngẫu nhiên và “block number” (64-bit) được khởi
tạo có dữ liệu là “00000001”. Ngồi ra có các hằng số
cố định (Cons) cùng với các dữ liệu trên được sắp xếp
theo bảng bên dưới, bảng này được gọi là “Cell”.

I. GIỚI THIỆU
Trong những năm gần đây, các mơ hình Internet of
Things (IoTs) đang trở nên phổ biến trong nhiều lĩnh vực
khác nhau tại Việt Nam. Vì thế các nhu cầu về bảo mật
dữ liệu cho các hệ thống IoT trở thành một đối tượng
nghiên cứu và phát triển, do các node trong hệ thống IoT
được xây dựng trên các vi điều khiển vẫn cịn nhiều hạn
chế về hiệu năng nên các thuật tốn được sử dụng trên
các node phải phù hợp với hiệu năng của vi điều khiển.
Các node trong hệ thống IoT chưa được kết hợp các

thuật toán bảo mật dữ liệu, hoặc các dữ liệu được mã hóa
vẫn có thể bị tấn cơng xen giữa do chưa có xác thực trong
q trình trao đổi dữ liệu. Thuật tốn ChaCha20Poly1305 cung cấp tính năng mã hóa xác thực dữ liệu
(AEAD) bằng cách sử dụng thuật tốn mã hóa dịng
(stream cipher) của thuật tốn ChaCha20 để mã hóa dữ
liệu và 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
này phù hợp khi được xây dựng trên vi điều khiển vì cơ
bản cả hai thuật tốn là ChaCha20 và Poly1305 là các
thuật tốn mã hóa nhẹ. Nhận thấy điều này nhóm nghiên
cứu đã nghiên cứu và ứng dụng trên một hệ thống IoT
thực tế bao gồm các node và máy chủ (Server). Các node
trong hệ thống IoT giữ vai trò là bên gửi (Trasmitter), dữ

ISBN 978-604-80-7468-5

Bảng 1. Định dạng của một “Cell”
61707865
3320646e
79622d32
6b206574
key
key
key
key
key
key
key
key
block

nonce
nonce
nonce
Bộ KSG sẽ tạo ra các output key có 512-bit (k1, k2,
k3,…) để tiến hành mã hóa dữ liệu. Q trình này là một
vịng lặp 20 vịng thực hiện phép tốn “Quarter Round”,
phép tốn này được thực hiện như sau.
QUARTERROUND(a, b, c, d) =
+= ; ^ = ; ≪ = 16
+= ; ^ = ; ≪= 12
(1)
+= ; ^ = ; ≪ = 8
+= ; ^ = ; ≪ = 7

453


Hội nghị Quốc gia lần thứ 25 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2022)

cụ thể hơn ta sẽ dựa vào Bảng 1 để thực hiện phép tốn
QUARTERROUND(0, 4, 8, 12) khi đó ta sẽ thực hiện

Trong đó, “+ ”là phép cộng các số theo modulo
2^32, “^” là phép XOR, “≪” là phép dịch trái. Các tham
số “a, b, c, d” là các vị trí của dữ liệu trong một “Cell”,
phép toán nêu trên với các tham số là các giá trị tại các
vị trí được đánh dấu “*” như Bảng 2 bên dưới:
Bảng 2. Đánh dấu số thứ tự trong phép tố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 được dùng tạo mã xác thực một
lần, thuật toán lấy một khóa một lần duy nhất (One-time
key) có độ dài 32-bit và dữ liệu của một tin nhắn để tạo
mã xác thực cho tin nhắn đó. Chức năng này của
Poly1305 đã khắc phục được các hạn chế về tính bảo
mật và xác thực của thuật tốn mã hóa dịng đơn giản là
ChaCha20. Mơ hình hoạt động của thuật tốn
ChaCha20-Poly1305 được mơ tả trong Hình 4 bên dưới
như sau.

Mỗi vịng thực hiện phép tốn “Quarter Round” bao
gồm 4 vịng thực hiện theo cột và 4 vòng thực hiện theo
đường chéo. Hình 2 định nghĩa các vị trí theo cột (bên

trái) và đường chéo (bên phải), đồng thời là các bộ 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 2. Định nghĩa vị trí theo cột (bên trái) và đường
chéo (bên phải).

trình
(1),
phép
tốn
Từ
phương
QUARTERROUND, và định nghĩa các cột như trong
Hình 2, thì mỗi vịng trong q trình tạo keystream có 8
bước sau đây:
- QUARTERROUND(0, 4 , 8, 12)
- QUARTERROUND(1, 5 , 9, 13)
- QUARTERROUND(2, 6 , 10, 14)
- QUARTERROUND(3, 7 , 11, 15)
- QUARTERROUND(0, 5 , 10, 15)
- QUARTERROUND(1, 6 , 11, 12)
- QUARTERROUND(2, 7 , 8, 13)
- QUARTERROUND(3, 4 , 9, 14)
Sau 20 vịng, ta có được một chuỗi output key 512bit (k0, k1, k2…), khi nhận các dữ liệu đầu vào (m0,
m1, m2…) và để tạo ra các dữ liệu mã hóa (c0, c1,
c2…), các output key được xor từng byte một với dữ
liệu ban đầu theo mơ hình trong Hình 3 bên dưới.

Hình 4. Mơ hình hoạt động thuật tốn ChaCha20Poly1305.


Dữ liệu đầu vào cho thuật tốn Poly1305 gồm có
One-time key (256-bit) được tách ra từ thuật toán
ChaCha20, một chuỗi dữ liệu (Msg) được kết hợp từ dữ
liệu liên kết (Associated Data) và dữ liệu mã hóa
(Ciphertext) từ thuật tốn ChaCha20. Chuỗi dữ liệu này
có định dạng như sau:
Bảng 3. Định dạng chuỗi dữ liệu đầu vào cho thuật
toán Poly1305
Associated
Chuỗi dữ liệu liên kết được
Data - AD
thêm vào cho quá trình tạo mã
xác thực
pad(AD)
Nếu độ dài chuỗi AD khơng là
bội số của 16 thì sẽ thêm kí tư
‘0’ vào đi để độ dài là bội
số của 16. Chuỗi pad sẽ chứa
các kí tự ‘0’
Ciphertext - C Chuỗi dữ liệu đã được mã hóa
bằng thuật tốn ChaCha20
pad(C)
Nếu độ dài chuỗi Ciphertext
không là bội số của 16 thì sẽ
thêm kí tư ‘0’ vào đi để độ
dài là bội số của 16. Chuỗi pad
sẽ chứa các kí tự ‘0’
len(AD)
Độ dài của chuỗi AD

len(C)
Độ dài của chuỗi Ciphertext

Hình 3. 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 về Điện tử, Truyền thơng và Cơng nghệ Thơng tin (REV-ECIT2022)

Bên cạnh đó One-time Key (r,s) sẽ bao gồm 2 phần
là ‘r’ và ‘s’. Trong đó:
- s[0..15]: Là chuỗi khóa chứa 16-byte cuối của
chuỗi khóa từ thuật tốn ChaCha20.
- r[0..15]: Là chuỗi khóa chứa 16-byte đầu của
chuỗi khóa từ thuật tốn ChaCha20. Khác với
“s”, “r” phải sửa đổi hay được gọi là “kẹp”
(clamp) theo định dạng như sau:
o 4-bit đầu của r[3], r[7], r[11] và r[15] phải
được xóa ( các phần tử “r” này sẽ thực hiện
phép toán AND với chuỗi nhị phân
“1111”)
o 2-bit cuối của r[4], r[8] và r[12] phải được
xóa ( các phần tử “r” này sẽ thực hiện phép
toán AND với chuỗi nhị phân “1111
1100”)
Ngồi ra, trong thuật tốn Poly1305 cần một hằng
số cố định trong quá trình thực hiện thuật toán là:

=2 −5
=3
và biến “acc” sẽ lưu lại kết quả của phép toán các dữ
liệu khác modulo với P.
Tổng qt q trình tạo mã xác thực của thuật tốn
Poly1305 được biều diễn trong Hình 5 như sau:

dữ liệu được tách ra đó sẽ được lưu vào chuỗi Block có
định dạng như trong Hình 6.

Hình 6. Định dạng chuỗi Block.

Sau khi dùng chuỗi Block thực hiện các phép tốn
như Hình 5 với số vòng lặp tương ứng, ta sẽ cộng kết
quả của phép toán (2) cuối cùng được lưu tại “acc” với
khóa “s”.
acc = acc + s
(2)
Sau đó dữ liệu đầu ra Tag của thuật toán sẽ là 16byte cuối cùng được lưu tại “acc”. Từ các kết quả trên
MCU-ESP32 có một gói dữ liệu có định dạng dữ liệu
đầu ra củ thuật tốn Chacha20-Poly1305 được trình bày
như trong Hình 7 bên dưới. Ngõ ra hệ thống bao gồm
dữ liệu đã được mã hóa (Cipher text), mã xác thực (Tag)
và header (giá trị có thể tùy chọn).

Hình 7. Định dạng dữ liệu đầu ra của 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

hiện thuật toán ChaCha20-Poly1305 trên một hệ thống
IoT dùng vi điều khiển ESP32. Hệ thống IoT được xây
dựng điều khiển hệ thống làm mát tự động tại các trạm
BTS (Base Tranceiver Station) [3, 4]. Các node tại trạm
BTS sẽ trực tiếp điều khiển q trình bật/tắt hệ thống
làm mát, bên cạnh đó đo các thơng số nhiệt độ phịng,
dịng điện và điện thế hệ thống làm mát đang sử dụng.
Sau đó, các node sẽ tiến hành mã hóa dữ liệu và tạo mã
xác thực gửi đến máy chủ để xác thực và giải mã dữ liệu.
Nhóm nghiên cứu thực hiện thuật tốn trên các gói
dữ liệu thực tế có độ dài 130-byte với dữ liệu “Cell” và
“Keystream”. Các dữ liệu của “Cell” và “Keystream”
được trình bày trong Bảng 4. Kết quả thực hiện thuật
toán ChaCha20-Poly1305 được thể hiện trong Bảng 5
bao gồm Cipher text và Tag. Thời gian thực thi trên hệ
thống là 1865ms, đây là thời gian chấp nhận được khi
thực hiện trên vi điều khiển và ESP32.

Hình 5. Quá trình tạo mã xác thực Tag.

Sau khi chuẩn bị chuỗi dữ liệu đầu vào (Msg) từ dữ
liệu mã hóa thơng qua thuật toán ChaCha20 và
Associated Data, thuật toán sẽ tiến hành khởi tạo các dữ
liệu cần thiết sau:
- r = clamp(ChaCha20_key[0..15])
- s = ChaCha20_key[16..31]
- P=
3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
- acc = 0
Do dữ liệu đầu ra Tag là một chuỗi dữ liệu 16-byte,

ngắn hơn so với chuỗi dữ liệu đầu vào nên thuật toán sẽ
thực hiện vòng lặp để tách dữ liệu từ chuỗi đầu, ở mỗi
vịng lặp sẽ tách 16-byte để thực hiện tính toán cho đến
byte cuối cùng. Khi tách ra 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 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2022)

Bảng 4. Dữ liệu “Cell” và “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 5. Bảng kết quả mã hóa dữ liu thc t
Plaintext:
{"devID":333,"voltage1":18,"voltage2":227,"curren
t1":3840,"current2":22018,"temperature":6493,
"temperature_warning":0,"status":74}
Ciphertext:
Ã
]ơLểơw~^ụẹ}ợ ờệố=#ụ 1ê! ứọ
Ơvlaẹf2 qÃAõ#0+0ỗJốÊQơ_}aF^TjGửẳ 'ỗ
Tag:
0xd6, 0x48, 0xc1, 0x99, 0xfd, 0xf8, 0xcd, 0xd0,
0xb1, 0xf1, 0xa8, 0x41, 0x68, 0xd4, 0xf6, 0x64
Running Time:
MCU – ESP32 = 1865 ms
Server = 58.659976959228516 ms
Bên cạnh đó, nhóm nghiên cứu thực hiện thuật tốn
trên các gói dữ liệu có độ dài khác nhau 128-byte, 256byte và 512-byte. Kết quả thực hiện thuật toán
ChaCha20-Poly1305 trên dữ liệu có độ dài 128-byte,
256-byte, 512-byte được trình bày tương ứng trong Bảng
6, Bảng 7, và Bảng 8.

Bảng 7: Kết quả từng bước thực hiện thuật toán
cho dữ liệu có độ dài 256-byte
Plaintext:
0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,

0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,

Bảng 6. Kết quả từng bước thực hiện thuật toán cho
dữ liệu có độ dài 128-byte
Plaintext:
0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,
0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,

0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20

ISBN 978-604-80-7468-5

456


Hội nghị Quốc gia lần thứ 25 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2022)

0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,
0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
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
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, 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:

ISBN 978-604-80-7468-5

0xa9, 0x20, 0x55, 0x47, 0xd, 0x3d, 0xf7, 0x26,
0x58, 0x9d, 0x3d, 0xa4, 0xd8, 0x1, 0x90, 0x65
Running Time:
MCU – ESP32 = 3256 ms
Server = 145.82530212402344 ms
Bảng 8: Kết quả từng bước thực hiện thuật toán
cho dữ liệu có độ dài 512-byte
Plaintext:
0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,
0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,

0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,
0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,
0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,

0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,

457


Hội nghị Quốc gia lần thứ 25 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2022)

0x7b, 0x22, 0x64, 0x65, 0x76, 0x49, 0x44, 0x22,
0x3a, 0x33, 0x33, 0x33, 0x2c, 0x22, 0x76, 0x6f,
0x6c, 0x74, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3a,
0x30, 0x2c, 0x22, 0x76, 0x6f, 0x6c, 0x74, 0x61,
0x67, 0x65, 0x32, 0x22, 0x3a, 0x30, 0x2c, 0x22,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x31,
0x22, 0x3a, 0x30, 0x2c, 0x22, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x32, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x3a, 0x30,
0x2c, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x61,
0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x36,
0x34, 0x2c, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x3a, 0x32, 0x30, 0x32, 0x7d, 0x20,

0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
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
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,
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,

ISBN 978-604-80-7468-5

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,

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:
0x47, 0xfd, 0x92, 0xd, 0x93, 0x88, 0x3b, 0x1c, 0xe,
0xaa, 0x4f, 0x4a, 0xaa, 0x4, 0xee, 0xe9
Running Time:
MCU – ESP32 = 6505 ms
Server = 200.0712661743164 ms
Dựa vào các kết quả thu được như trên, trong quá
trình triển khai thực tế trên hệ thống IoT. Nhóm nghiên
cứu đã thu được thực tế các gói dữ liệu được mã hóa tại
các node có độ dài trong khoảng 128-byte đến 512-byte.
Kết quả thời gian thực hiện thuật toán cho các gói dữ
liệu này được thể hiện trong Bảng 9.
Bảng 9. Kết quả thời gian thực hiện thuật toán
Thời gian
Độ dài

MCU – ESP32
128-byte
1661 ms
Server
128-byte
49.92 ms
MCU – ESP32
256-byte
3250 ms
Server
256-byte
119.14 ms
MCU – ESP32
512-byte
6410 ms
Server
512-byte
206.71 ms
Q trình mã hóa dữ liệu và tạo mã xác thực tại vi
điều khiển và ESP32 với các dữ liệu có có độ dài càng
lớn thì sẽ mất nhiều thời gian hơn để thực thi. Chẳng
hạn như kết quả được trình bày trong Bảng 6, với dữ
liệu có độ dài 128-byte thì thời gian thực thi là khoảng

458


Hội nghị Quốc gia lần thứ 25 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2022)

1,6 giây; trong khi đó với dữ liệu có độ dài 512-byte thì

thời gian thực thi là khoảng 6,5 giây.

TÀI LIỆU THAM KHẢO
[1]

V. KẾT LUẬN
Nghiên cứu đã hoàn thành việc xây dựng được thuận
toán ChaCha20-Poly1305 và tiến hành thực hiện thực
tế trên một hệ thống IoT hoàn chỉnh bao gồm các thiết
bị (node), hệ thống Server trên vi điều khiển và ESP32.
Quá trình nghiên cứu với mục đích nâng cao tính bảo
mật cho thông tin trong hệ thống IoT. Kết quả thu được
đạt được các mục tiêu cơ bản đề ra cho đề tài nghiên
cứu. Ngồi ra, nhóm sẽ tiếp tục nghiên cứu về thuật toán
với hai mục tiêu. Mục tiêu thứ nhất, nghiên cứu thêm
về “nonce number” để nâng cao tính phức tạp cho dữ
liệu đầu vào từ đó làm cơ sở nâng cao tính bảo mật của
thuật tốn. Mục tiêu thứ hai, nghiên cứu về q trình
thực hiện các phép tốn với số rất lớn thuật toán cụ thể
là các phép tốn thực hiện trong q trình tạo mã xác
thực với mục tiêu giảm thiểu được thời gian thực hiện
thuật toán và tối ưu các tài nguyên hạn chế tại vi điều
khiển và nâng cấp hệ thống Server cho hệ thống.

ISBN 978-604-80-7468-5

[2]

[3]


[4]

[5]

459

Adam Langley, Yoav Nir, “ChaCha20 and Poly1305 for IETF
Protocols”, pp. 1-45, May, 2015.
Phillip Rogaway, "Authenticated-encryption with Associateddata", Proceedings of the 9th ACM conference on Computer
and Communications Security (CCS '02), pp. 98–107, Nov,
2002.
A. Jothivelu and S. P. Simon, "A Smart BTS/Node B Network
Monitoring and Control using IoT," 2019 Fifteenth
International Conference on Information Processing
(ICINPRO), pp. 1-5, 2019.
P. A. M. Hambali, Syamsuddin, M. R. Effendi and E. A. Z.
Hamidi, "Prototype Design of Monitoring System Base
Tranceiver Station (BTS) Base on Internet of Things," 2020 6th
International Conference on Wireless and Telematics (ICWT),
pp. 1-6, 2020.
F. De Santis, A. Schauer and G. Sigl, "ChaCha20-Poly1305
authenticated encryption for high-speed embedded IoT
applications," Design, Automation & Test in Europe
Conference & Exhibition (DATE 2017), pp. 692-697, 2017.



×