2.3.3.5.Phân tích độ an toàn của Salsa20-Poly1305
Thuật toán Salsa20-Poly1305 có khả năng bảo mật và phòng chống các loại tấn công cụ thể như sau:
Salsa20-Poly1305 có thể chống lại tấn công phát lại (Replay attack) và tấn công từ chối dịch vụ(DoS). Do trên mỗi gói tin đều có một giá trị nonce chỉ được sử dụng đúng một lần nên đảm bảo không bao giờ có 2 gói tin nào giống nhau được gửi trên đường truyền và tránh cuộc tấn công trung gian bắt và phát lại các gói tin đã trao đổi trước đó cũng như sinh một số lượng lớn gói tin.
Tính mã MAC dựa trên bản mã giúp tránh lộ bản rõ do giá trị MAC sẽ không mang bất kỳ thông tin nào về cấu trúc của bản rõ.
n=(n 1, n 2)=(16,8) Dữ liệu mã hóa Bản mã Poly1305 Salsa20 Curve25519 K RA K UB r(16) s(16) Stream + Bản rõ MAC(16) Bản mã Curve25519 K RB K UA k (32) Dữ liệu mã hóa MAC(16) Bản mã Salsa20 r(16) s(16) Stream MAC=MAC’ Poly1305 MAC’(16) + Bản rõ Truyền tin
Bên gửi Bên nhận
Sai
Đúng
47
Giúp chống lại các cuộc tấn công chọn sẵn bản mã, bên gửi sẽ chỉ giải mã những bản mã nào là hợp lệ (phù hợp với giá trị MAC nhận được).
Kẻ tấn công dù biết n, bản mã nhưng không thể tính toán được cặp giá trị (MAC, thông điệp) giả mạo bởi chúng không biết khóa chia sẻ trước. Độ an toàn phụ thuộc vào hàm sinh khóa bất đối xứng trên đường con eliptic Curve25519 và giao thức thống nhất khóa Difflie-Hellman.
2.4. So sánh đánh giá cơ chế mã hóa xác thực AES-CCM, AES-GCM với Salsa20-Poly1305 GCM với Salsa20-Poly1305
Trong phần này, tác giả đã so sánh đánh giá những ưu, nhược điểm của một số cơ chế mã hóa xác thực khác nhau dựa trên tính ứng dụng của thuật toán để lựa chọn thuật toán phù hợp cho hướng nghiên cứu. Tác giả đã đánh giá dựa trên hai tiêu chí về độ an toàn và tài nguyên mạng của các thuật toán như sau:
2.4.1. Độ an toàn
Phần so sánh các thuật toán AES-CCM, AES-GCM và Salsa20-Poly1305 dựa trên tính ứng dụng của thuật toán. Đây là những thuật toán mã hóa xác thực đã được sử dụng phổ biến. Theo đánh giá các tham số của các thuật toán mã hóa xác thực tại bảng 2.1. Tác giả có thể rút ra các kết luận như sau:
AES-CCM [45] là tiêu chuẩn được biết đến với cơ chế mật mã khối đối xứng sử dụng kích thước khóa 256 bits. AES-CCM là tiêu chuẩn mã hóa xác thực dựa trên cấu trúc quản lý khóa. Trong thuật toán này, bản rõ được chia thành các mật mã khối có kích thước 128 bits. Các chế độ hoạt động được sử dụng trong AES-CCM là chế độ bộ đếm (CTR) với chuỗi khối mật mã và mã xác thực bản tin (CBC-MAC). Chúng thực hiện các chức năng tạo mã hóa và giải mã xác thực. Tính năng bảo mật đạt được trong chế độ CTR bởi AES và xác thực đạt được trong CBC-MAC với giá trị MAC được tạo ra. AES-CCM có giá trị nonce độ dài 96 bits khả năng lặp lại giá trị nonce cao ảnh hưởng tới độ bảo mật khi truyền bản tin trên mạng.
AES-GCM được thiết kế để bảo mật chống lại các cuộc tấn công bản mã, thuật toán AES-GCM sử dụng mã hóa khối AES để tăng cường tính bảo mật và tính xác thực. Thuật toán AES- GCM chấp nhận một khóa có cùng kích thước 256 bits với mã hóa cơ bản, 96 bits nonce và hoạt động với 128-bitskhối. AES-GCM dựa trên chế độ CTR, trong chế độ này, nếu khóa / vectơ khởi tạo (IV) được sử dụng lặp lại thì kẻ tấn công có thể giải mã khóa, gây ảnh hưởng đến cấp độ bảo mật bản rõ và giảm thiểu tính bảo mật của các bản tin được truyền trên mạng trong RFC 5084 [52].
Độ an toàn của Salsa20-Poly1305 đã được đề cập chi tiết trong hai công trình công bố của Bernstein năm 2011 [49] và 2005 [50] là sự kết hợp giữa Salsa20 và Poly1305. Salsa20 [49] được sử dụng để mã hóa và được thiết kế để cung cấp bảo
48
mật 256 bits cho phép sử dụng các khóa khác nhau. Salsa20 mã hóa một gói tin có độ dài 256 bits bằng cách sử dụng độ dài nonce 192 bits được tạo ngẫu nhiên với độ dài bộ đếm cũng như các số vòng khác nhau và độ dài khóa bí mật 256 bits. Giả định bảo mật của Salsa20 có khả năng tạo ra các bản mã không thể phân biệt được với các bản mã hoàn hảo. Poly1305 [50] được sử dụng để xác thực bản tin, Poly1305 có thể bảo mật xác thực bản tin giống như cấp độ bảo mật tương tự như mã hóa AES-CCM, AES-GCM. Tuy nhiên, mã hóa Poly 1305 đảm bảo không thể mã hóa hai bản rõ khác nhau trong cùng một bản mã. Khoảng cách bảo mật tối đa là 14D [L/16]/2106, trong đó D là số nút giả mạo và kẻ tấn công nhìn thấy 264 được xác thực bản tin, được tính bằng cách sử dụng bản tin L-byte. Ngoài ra, thuật toán Poly 1305 dễ triển khai với tốc độ mã hóa nhanh và chi phí thấp.
Độ dài của các tham số sử dụng trong các thuật toán được diễn tả trong bảng 2.1. Chúng ta biết rằng, mã hóa AES- CCM và AES-GCM là hai thuật toán dùng để xác thực bản tin được sử dụng rộng rãi. Tuy nhiên, những nhược điểm của hai thuật toán này là đều sử dụng giá trị nonce 96 bits cho nên khả năng lặp lại cao có thể dẫn đến gây ra xung đột và ảnh hưởng tới độ bảo mật bản tin. Còn đối với thuật toán Salsa20-Poly1305 dựa trên Poly1305 để xác thực và mã hóa Salsa20. Thuật toán Salsa20-Poly1305 sử dụng 256 bits khóa tương tự hai thuật toán mã hóa trên nhưng độ dài khối 512 bits và độ dài nonce 192 bits lớn hơn so với thuật toán AES-CCM và AES-GCM cho nên thuật toán Salsa20-Poly1305 mang lại tính bảo mật tốt hơn. Vì vậy, chúng ta có thể kết luận rằng, thuật toán Salsa20-Poly1305 có thể sử dụng để mã hóa/giải mã bản tin thay thế cho thuật toán AES-CCM và AES-GCM về bảo mật an toàn dữ liệu.
Bảng 2.1 So sánh các cơ chế mã hóa xác thực dựa trên các chỉ số khác nhau như vectơ khởi tạo (IV), độ dài khóa (Key size), độ dài khối (Block size), nonce
Mã hóa xác thực
Vectơ khởi tạo (bits) Độ dài khóa (bits) Độ dài khối (bits) Nonce (bits) AES-CCM 64 256 128 96 AES-GCM 64 256 128 96 Salsa20-Poly1305 128 256 512 192 2.4.2. Tài nguyên mạng
Trong phần này, tác giả đã tập hợp các công trình nghiên cứu thử nghiệm liên quan đã được công bố trước đây về so sánh hiệu suất của các thuật toán mã hóa xác thực dựa trên tài nguyên mạng. Ngoài ra, tác giả cũng đã tự thực nghiệm so sánh các
49
cơ chế mã hóa xác thực trên các thiết bị khác nhau để có cơ sở đề xuất sử dụng thuật toán làm tiền đề cho nghiên cứu này.
Trong bài báo [53], đã đánh giá khả năng ứng dụng của các thuật toán trên IoT, Salsa20-Poly1305 đã được triển khai cho bộ xử lý ARM Cortex–M4. Kết quả cho thấy thuật toán Salsa20-Poly1305 nhanh hơn AES-CCM và AES-GCM.
Trong nghiên cứu [54], [55], đã đề xuất thực hiện một so sánh giữa AES-CCM và AES-GCM để kiểm tra xem chế độ hoạt động nào có hiệu suất tốt hơn. Kết quả đã cho thấy AES-GCM nhanh hơn AES-CCM khi nói đến hiệu suất mạng. Ngoài ra, AES-GCM khả thi hơn khi được sử dụng trong các ứng dụng mà hiệu suất là mối quan tâm chính.
Tác giả Islam và cộng sự [56], đã so sánh về độ trễ truyền dữ liệu giữa AES- GCM và Salsa20-Poly1305 trên các nền tảng hạn chế tài nguyên mạng được tích hợp với giao thức DTLS. Kết quả cho thấy, thuật toán Salsa20-Poly1305 nhanh hơn thuật toán AES-GCM cấp ba lần về mã hóa và giải mã. Bởi vì thuật toán Salsa20-Poly1305 cung cấp mã hóa khóa 256-bits, sử dụng ít thời gian hơn để giải mã có thể được hiển thị nhanh. Salsa20-Poly1305 cũng có thể tiết kiệm năng lượng khi các gói dữ liệu được trao đổi giữa các hops trong mạng cảm biến được triển khai trong trình mô phỏng cooja được phân tích rộng rãi. Kết quả cho thấy độ trễ truyền dữ liệu trong hệ thống đã triển khai giảm từ 42.5% đến 50%–56%.
Các công trình nghiên cứu trên cho thấy, thuật toán Salsa20-Poly1305 có thể giảm thiểu chi phí hiệu suất mạng, cho phép triển khai nhanh hơn và đạt hiệu suất cao hơn so với AES-CCM và AES-GCM. Điều đó cho thấy sử dụng Salsa20-Poly1305 có kết quả xử lý ấn tượng và truyền dữ liệu bằng thuật toán Salsa20-Poly1305 đạt hiệu quả tốt và nhanh hơn so với AES-CCM và AES-GCM.
Ngoài các kết quả nghiên cứu trên, tác giả đã tiến hành thực nghiệm về mặt thời gian và mức tiêu hao năng lượng liên quan đến chức năng mã hóa / giải mã trên một số các thiết bị IoT khác nhau, gồm có Zolertia Z1 [57], Tmote Sky [58] và WiSMote [59]. Đây là các thiết bị IoT được sử dụng phổ biến trong môi trường mạng cảm biến không dây. Đối với phần thực nghiệm này có thể được sử dụng để làm như một thước đo mức tiêu hao năng lượng cho các thiết bị di động khác nhau, các kết quả thực nghiệm cụ thể tại bảng 2.2 dưới đây.
50
Bảng 2.2 Thời gian và mức tiêu thụ năng lượng liên quan đến các chức năng mã hóa và
giải mã trên các thiết bị cảm biến khác nhau.
Salsa20- Poly1305
Mã hóa Giải mã
Z1 mote Tmote
Sky WiSMote Z1 mote
Tmote
Sky WiSMote
Thời gian (ms) 33 45 10 55 79 17
Năng lượng
(mJ) 0.04 0.24 0.67 0.07 0.42 1.12
Trong bảng 2.2, chúng ta có thể thấy những mối quan hệ giữa thời gian mã hóa, giải mã và mức tiêu hao năng lượng của các thiết bị IoT khác nhau như sau:
Thời gian mã hóa và giải mã của thiết bị WiSMote là nhanh nhất nhưng cũng tiêu tốn nhiều năng lượng nhất so với các thiết bị khác.
Thiết bị TmoteSky tốn nhiều thời gian mã hóa và giải mã nhất. Thiết bị Z1mote tiết kiệm năng lượng nhất so với các thiết bị khác.
Do vậy, qua việc thực hiện các tham số kết quả trên, chúng ta có thể thấy rằng thuật toán Salsa20-Poly1305 có thời gian mã hóa và giải mã trên các thiết bị đều có tốc độ nhanh và ngược lại mức tiêu hao năng lượng mạng ít.
Bên cạnh đó, tác giả đã thực hiện so sánh giữa thuật toán Salsa20-Poly1305 và AES-CCM với ngữ cảnh mô phỏng ở đây được thực hiện trong môi trường mô phỏng COOJA trong ContikiOS, chương trình mã hóa /giải mã được cài đặt trên một phần mềm và chạy trên thiết bị WisMote. Trong đó, môi trường mô phỏng thì thời gian được lấy trong chương trình mô phỏng là COOJA, hàm năng lượng sử dụng công thức tính toán dựa theo môi trường trong Contiki đối với thiết bị mô phỏng WisMote, các kết quả đã được thể hiện tại bảng 2.3 như sau:
Bảng 2.3 So sánh Salsa20-Poly1305 với AES-CCM về thời gian và mức tiêu thụ năng lượng liên quan đến các chức năng mã hóa và giải mã trên thiết bị WiSMote
Thuật toán mã hóa xác thực Mã hóa Giải mã Thời gian (ms) Năng lượng (mJ) Thời gian (ms) Năng lượng (mJ) AES-CCM 14 0.90 13 0.89 Salsa20-Poly1305 10 0.67 17 1.12
51
Tại bảng 2.3, chúng ta có thể thấy mối quan hệ giữa thời gian mã hóa, giải mã và mức tiêu hao năng lượng giữa thuật toán Salsa20-Poly1305 và AES-CCM trên thiết bị WisMote. Chúng ta có thể thấy rằng, thuật toán Salsa20-Poly1305 có thời gian mã hóa ngắn hơn và ít tiêu thụ năng lượng hơn so với thuật toán AES-CCM, tuy nhiên thời gian và năng lượng tiêu thụ để giải mã lại nhiều hơn. Về tổng quan chúng ta thấy tổng thời gian và năng lượng tiêu thụ để mã hóa và giải mã giữa hai thuật toán là tương đương nhau.
Từ kết quả đánh giá so sánh thực nghiệm ở trên, chúng ta có thể kết luận được rằng thuật toán Salsa20-Poly1305 có hiệu quả tương đương so với AES-CCM trên môi trường mạng cảm biến không dây với năng lượng và tốc độ tính toán hạn chế. Tác giả thấy rằng có đủ cơ sở đề xuất sử dụng thuật toán Salsa20-Poly1305 làm tiền đề cho việc mã hóa và xác thực thông điệp trong nghiên cứu này.
2.5. Đánh giá thực nghiệm thuật toán Salsa20-Poly1305 đối với LLN
Mục tiêu đánh giá thực nghiệm trong phần này, tác giả đã thực nghiệm đánh giá hiệu suất của thuật toán mã hóa xác thực Salsa20-Poly1305 để phân tích xem xét đánh giá những ảnh hưởng của thuật toán đối với mạng tổn hao năng lượng thấp và dựa vào đó để đánh giá tính khả thi và tính hiệu quả khi ứng dụng thuật toán này.
2.5.1. Thiết lập môi trường mô phỏng
Trong phần này, mô hình mô phỏng mạng tác giả sử dụng phần mềm mô phỏng Cooja (Contiki OS Java) là một công cụ mô phỏng mạng cảm biến không dây được xây dựng trên hệ điều hành Contiki đã tích hợp vào trong Cooja (Contiki- 2.7/Tools/Cooja) [60]. Contiki là một hệ điều hành dành cho các thiết bị hạn chế tài nguyên trong lĩnh vực IoT, dễ dàng quản lý, quan sát các tham số, tỷ lệ truyền nhận gói tin. Kết quả mô phỏng mạng được lưu lại dưới dạng file log là đầu vào của một chương trình duyệt file, đưa ra các giá trị thông số về hiệu suất mạng. Sau đó, sử dùng Excel để vẽ biểu đồ thể hiện mối quan hệ và kết quả một cách trực quan.
2.5.1.1.Thuật toán mã hóa
Thuật toán mã hóa bản tin bằng Salsa20 [49] trong thư viện NaCl [48] sử dụng hàm crypto_secretboxđược biểu diễn như sau:
crypto_secretbox (m, c, n, k, mlen)
Trong đó, c là bản mã, m là bản tin, n là nonce 24 bytes, mlen là chiều dài của bản rõ m và k là khóa bí mật 32 bytes được hai thực thể sử dụng hàm. Các thuật toán đã áp dụng trong mã hóa bản tin tại thuật toán 2.1.
52
Thuật toán 2.1: Mã hóa bản tin [61]
Crypto_secretbox (m, c, n, k, mlen) Input: m, n, k, mlen
Output: The ciphertext c
if mlen < 32 then
plaintext cannot be encrypted exit
end if
crypto stream xor (c, m, n, k, mlen)
crypto_onetimeauth (c+16, c+32, mlen-32, c) Set 16 bits of c equal to zero,
Message is encrypted
return c
Dữ liệu đầu vào gồm có m, n, k, mlen. Bắt đầu, chúng ta kiểm tra độ dài mlen của bản rõ m, nếu mlen < 32 thì thông báo không thể mã hóa và thoát khỏi quá trình mã hóa. Ngược lại, chúng ta tiến hành giả mã bản tin bằng hàm có sẵn trong thư viện NaCl [48]. Sau đó, chúng ta gán 16 bits thấp của chuỗi mã hóa c bằng 0 và trả về c cùng thông báo đã mã hóa bản tin. Giá trị thực sự của chuỗi mã hóa c bắt đầu từ bit thứ 16.
2.5.1.2.Thuật toán giải mã
Thuật toán giải mã bản tin bằng Poly1305 là mã hóa hiện đại để xác thực tính toàn vẹn và tính xác thực của bản tin. Hàm được sử dụng để giải mã bản tin là crypto_secretbox_open đã được biểu diễn như sau:
crypto_secretbox_open (c, m, n, k, clen)
Trong đó, m là bản tin, c là bản mã nhận được, n là số nonce, clen là chiều dài của bản mã nhận được và k là khóa bí mật được thực hiện trong thuật toán 2. Cả TweetNaCl [62] và Python TweetNaCl [62] đều bao gồm các quy ước đặt tên cho hai hàm này. Các tính năng được thiết kế để đáp ứng các tiêu chuẩn về quyền riêng tư và tính xác thực hiện tại. Mã hóa ban đầu được sử dụng cho chức năng này là sự kết hợp của Salsa20 để mã hóa và Poly1305 để xác thực.
53
Thuât toán giải mã bản tin 2.2 được trình bày như sau:
Thuật toán 2.2: Giải mã bản tin [61]
Crypto_secretbox_open (c, m, n, k, clen) Input: c, n, k, clen
Output: The decrypted message m
if clen < 32 then
ciphertext cannot be decrypted exit
end if
crypto stream (x, 32, n, k)
if crypto_onetimeauth_verify () then
ciphertext cannot be decrypted exit
end if
crypto stream xor (c, m, n, k, clen) Set 32 bits of message equal to zero
return m
Cả hai chức năng được đề cập ở trên đều dựa trên Poly1305 và Salsa20. Đặc biệt, m là được mã hóa bằng mã hóa XOR luồng đầu ra Salsa20 để hỗ trợ 24 bytes