Luận án Nghiên cứu giải pháp nâng cao hiệu quả sử dụng mật mã đường cong Elliptic trên các thiết bị tính toán nhúng

Hệ thống nhúng (Embedded System) là một thuật ngữ thường dùng để chỉ một thiết
bị tính toán đặc biệt, có tích hợp cả phần cứng và phần mềm phục vụ các ứng dụng
chuyên dụng trong nhiều lĩnh vực của đời sống hiện nay. Khác với các hệ thống phổ
biến khác, ví dụ như các máy tính đa năng hay nhiều hệ thống máy tính trong điều
khiển công nghiệp, các hệ thống nhúng thường có kích thước nhỏ hơn, khả năng xử
lý yếu hơn, bộ nhớ nhỏ hơn và yêu cầu tiêu thụ ít năng lượng [10, 11].
Một hệ thống nhúng gồm ba thành phần chính:
• Phần cứng
• Phần mềm ứng dụng
• Hệ điều hành hoặc một hệ thống thời gian thực (RTOS) 

Phần cứng hệ thống nhúng:
Embedded Processor
Power Management Clocks Reset Control Embedded Flash
System RAM
ROM
Sensors Analog I/0s Application Specific
Interrupt Control
Peripherals
Phần cứng của một hệ thống nhúng thông thường gồm các thành phần chính sau:
• Quản lý nguồn (Power Management): Chức năng của thành phần này là cung
cấp nguồn điện và điều khiển chế độ cấp nguồn nhằm mục đích tối ưu trong
tiêu thụ năng lượng. Thành phần này có thể chứa một bộ đồng hồ thời gian
thực RTC (Real Time Clock)
• Vi xử lý nhúng (Embedded Processor): Đây là trung tâm của bất kỳ một vi
điều khiển nào (microcontroller) dựa trên hệ thông nhúng. Các vi xử lý này
được tối ưu về kích thước cũng như chức năng riêng biệt cho từng sản phẩm.
Đa phần trong lớp vi xử lý này sẽ tích hợp một vài chức năng DSP cơ bản gồm
bộ nhân/chia bằng phần cứng.
• Bộ nhớ (System RAM, ROM, Embedded Flash): Thành phần nhớ RAM trong
một hệ thống nhúng nên có thời gian truy cập thấp. Một vài vi điều khiển
nhúng gồm thành phần ROM để lưu thành phần phần mềm khởi tạo
(bootloader), và có bộ nhớ Flash cho phép lập trình chương trình.
• Ngoại vi (Peripherals) và I/O: Các ngoại vi là các thiết bị vào và ra được kết
nối đến cổng nối tiếp hoặc song song của hệ thống nhúng. Một vi điều khiển
truyền thông với các ngoại vi sử dụng một giao tiếp có thể lập trình.
• Đồng hồ thời gian (Timers) và Watchdog: Một bộ vi điều khiển sẽ gồm bộ
đếm thời gian khác nhau để xác định sự kiện theo thời gian, ví dụ cho phép hệ
thống vào chế độ tiết kiệm năng lượng và thoát khỏi chế độ này. Một bộ đếm
thời gian đặc biệt gọi là “watchdog timer” khác, là một phần thiết yếu của bất
kỳ hệ thống nhúng được sử dụng để phát hiện và khôi phục chương trình khi
chạy một đoạn mã gặp sự cố.
• Thành phần cảm biến (Sensors) và tương tự (Analog): Một hệ thống nhúng
thường gồm nhiều cảm biến như cảm biến nhiệt độ và các thành phần tương
tự như bộ chuyển đổi tương tự - số (ADC), bộ chuyển đổi số - tương tự
(DAC)…
• Ngoài ra, trong thiết kế phần cứng hệ thống nhúng còn có các thành phần khác
như: điều khiển khởi động hệ thống (Reset control), điều khiển ngắt (Interrupt
control), thành phần liên quan đến ứng dụng (Application Specific) … 

 

pdf 135 trang phubao 26/12/2022 4840
Bạn đang xem 20 trang mẫu của tài liệu "Luận án Nghiên cứu giải pháp nâng cao hiệu quả sử dụng mật mã đường cong Elliptic trên các thiết bị tính toán nhúng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfluan_an_nghien_cuu_giai_phap_nang_cao_hieu_qua_su_dung_mat_m.pdf
  • pdfLA_Phạm Văn Lực_TT.pdf
  • pdfPhạm Văn Lực _E.pdf
  • pdfPhạm Văn Lực _V.pdf
  • pdfQĐ_ Phạm Văn Lực.pdf

Nội dung text: Luận án Nghiên cứu giải pháp nâng cao hiệu quả sử dụng mật mã đường cong Elliptic trên các thiết bị tính toán nhúng

  1. 98 đồng thời hai phép nhân, chỉ lệnh NEON rất hữu ích để tăng tốc cho tính toán các giải thuật số học. Tuy nhiên, việc tải (loading) và lưu (storing) dữ liệu giữa thanh ghi NEON và bộ nhớ có chi phí cao, bởi vậy nhằm mục đích có được lợi thế thực sự từ tính toán song song trong NEON thì các chỉ lệnh tải và lưu dữ liệu (load/store) cần hạn chế tối đa. Điểm khác biệt trong đề xuất ở đây so với mô tả trong bài báo [33] (trong đó các chỉ lệnh này được sử dụng quá nhiều) là hạn chế tối đa sử dụng chỉ lệnh này, cụ thể trong bước 7 đến bước 11 của thuật toán 3 [33] thì các biến dữ liệu từ bộ nhớ &t[i+j], &u[i+j] liên tục được tải vào thanh ghi NEON và lấy ra bộ nhớ trong hai vòng lặp, do vậy sẽ làm chậm hiệu suất thực thi phép nhân song song trong NEON (sẽ không đạt được cơ chế Pipeline). Đối với trường hợp nhân 256-bit và 384-bit: Do việc đọc vào và ghi ra dữ liệu giữa bộ nhớ và thanh ghi NEON mất khá nhiều thời gian (sử dụng chỉ lệnh vld và vst), nên luận án thực hiện đọc toàn bộ dữ đầu vào từ bộ nhớ, rồi áp dụng thuật toán 3.6 để tính toán. Sau đó kết quả từ thanh ghi NEON được ghi trở lại bộ nhớ. Điều này sẽ giảm thiểu thời gian đọc vào ghi dữ liệu giữa bộ nhớ và thanh thi NEON. Cụ thể như sau: + Với trường hợp 256-bit: Các số hạng đầu vào 256-bit được lưu trong mảng bộ nhớ 8 từ, mỗi từ 32-bit. Sẽ cần 11 thanh ghi 128-bit, trong đó 9 thanh ghi để lưu các tích trung gian và 2 thanh thi để lưu các biến tạm (carray, biến để lấy dữ liệu phần thấp). Ngoài ra, sẽ cần 10 thanh ghi 64-bit, trong đó 9 thanh ghi để lưu các số hạng đầu vào và 1 thanh ghi để lưu biến tạm. Chi tiết cài đặt được trình bày ở trong Phụ Lục 1. + Với trường hợp 384-bit: Các số hạng đầu vào 384-bit được lưu trong mảng bộ nhớ 12 từ, mỗi từ 32-bit. Sẽ cần 15 thanh ghi 128-bit, trong đó 13 thanh ghi để lưu các tích trung gian và 2 thanh thi để lưu các biến tạm (carry, biến để lấy dữ liệu phần thấp). Ngoài ra, sẽ cần 14 thanh ghi 64-bit, trong đó 13 thanh ghi để lưu các số hạng đầu vào và 1 thanh ghi để lưu biến tạm. Chi tiết cài đặt được trình bày ở trong Phụ Lục 1. Đánh giá số chỉ lệnh tải và lưu dữ liệu
  2. 100 256 256 256 = · 2 + 퐿 và = · 2 + 퐿, = · 2 + 퐿. Phép nhân kép = · và = · được tính theo công thức cộng sau: 521 256 · · 2 + [( + 퐿)( + 퐿) − · − 퐿 · 퐿] · 2 + 퐿 · 퐿 521 256 · · 2 + [( + 퐿)( + 퐿) − · − 퐿 · 퐿] · 2 + 퐿 · 퐿 Các số hạng 퐿, 퐿, 퐿, 퐿 có độ dài 256-bit (8 từ), do vậy các cặp phép nhân 퐿 · 퐿 và 퐿 · 퐿 được thực hiện bằng thuật toán nhân kép 8 từ kế thừa từ bộ nhân kép với độ dài số hạng 256-bit. Các số hạng , , , có độ dài 288-bit (9 từ), do vậy các cặp phép nhân · và · được thực hiện bằng thuộc toán nhân kép 9 từ bằng bộ nhân kép với độ dài số hạng 288-bit. Các số hạng ( + 퐿), ( + 퐿), ( + 퐿), ( + 퐿) có độ dài 320-bit (10 từ), do vậy các cặp phép nhân ( + 퐿) · ( + 퐿) và ( + 퐿) · ( + 퐿) được thực hiện bằng thuộc toán nhân kép 10 từ bằng bộ nhân kép với độ dài số hạng 320-bit. Thuật toán 3.7: Nhân karatsuba kép cho 521-bit Đầu vào: Bốn số hạng có độ dài 17 từ 32bit = || 퐿, = || 퐿 và = || 퐿, = || 퐿 Đầu ra: = · và = · có độ dài 34 từ 32-bit 1. Tính song song 퐿 = 퐿 · 퐿 và 퐿 = 퐿 · 퐿 {NEON, 256bit} 2. Tính song song = · và = · {NEON, 288bit } 3. Tính 퐿 = ( + 퐿), 퐿 = ( + 퐿) {C, 320bit} 4. Tính 퐿 = ( + 퐿), 퐿 = ( + 퐿) {C, 320bit} 5. Tính song song = 퐿 · 퐿 và = 퐿 · 퐿 {NEON, 320bit} 521 256 6. Tính = . 2 + ( − − 퐿). 2 + 퐿 {C} 521 256 7. Tính = . 2 + ( − − 퐿). 2 + 퐿 {C} 3.4.3. Cải tiến thuật toán số học trên đường cong Elliptic 3.4.3.1 Cộng điểm Như đã trình bày ở các mục trên, bất cứ ở đâu xuất hiện cặp phép nhân trên 퐹 mà dữ liệu của chúng không phụ thuộc vào nhau thì ta có thể sử dụng các thuật toán nhân kép đã trình bày ở trên để thực hiện nhân song song cặp phép nhân này. Nguyên lý này cũng có thể áp dụng cho phép bình phương. Để đơn giản cho quá trình cài đặt,
  3. 102 Đầu ra: 푃3 = 푃1 + 푃2 = ( 3, 푌3, 푍3) 2 2 1. 1 = 푍1 , 2 = 푍2 {NEON} 2. 푈1 = 1 ∙ 1, 푈2 = 2 ∙ 2 {NEON} 3. 푆1 = 푍2 ∙ 2, 푆2 = 푍1 ∙ 1 {NEON} 4. 푆1 = 푌1 ∙ 푆1, 푆2 = 푌2 ∙ 푆2 {NEON} 5. = 푈2 − 푈1 {C} 6. = 2 ∙ {C} 2 2 7. = , 3 = 푅 {NEON} 7. 퐽 = ∙ , = 푈1 ∙ {NEON} 8. 푅 = 2 ∙ (푆2 − 푆1) {C} 10. 3 = 3 − 퐽 − 2 ∙ {C} 11. 3 = − 3 {C} 12. 3 = 푅 ∙ 3, 4 = 푆1 ∙ 퐽 {NEON} 11. 푌3 = 3 − 2 ∙ 4 {C} 2 12. 푍3 = ((푍1 + 푍2) − 1 − 2) ∙H {C} 3.4.3.2 Nhân đôi điểm Tương tự như phép cộng điểm, dựa trên thuật toán nhân đôi điểm (thuật toán 3.10) được trình bày trong Explicit-Formulas Database [56], luận án tổ chức lại và đề xuất thuật toán nhân đôi điểm sử dụng phép nhân kép theo thuật toán 3.11, với đặc điểm là các phép nhân, bình phương thông thường được tổ chức thành các cặp phép nhân, cặp phép bình phương hoặc cặp phép nhân và bình phương mà có dữ liệu độc lập với nhau như sau Thuật toán 3.10: Nhân đôi điểm sử dụng thuật toán nhân tuần tự Đầu vào: 푃1 = ( 1, 푌1, 푍1) biểu diễn trong hệ tọa độ Jacobi Đầu ra: 푃3 = 2 ∗ 푃1 = ( 3, 푌3, 푍3) 2 1. 0 = 푒푙푡 = 푍1 2 2. 1 = = 푌1 3. 2 = 푒푡 = 1 ∗ 1 4. 3 = 1 − 0 5. 4 = 1 + 0
  4. 104 Thuật toán Phép toán trên điểm Cộng điểm Nhân đôi điểm Thuật toán tuần tự [56] 11M+5S 3M + 5S Thuật toán song song theo đề xuất 5Mt + 2Mt + 1M +1S 4Mt 3.4.4. Nhân vô hướng Luận án sử dụng thuật toán 3.3 để nhân một số nguyên dương với một điểm, trong đó phép cộng điểm và phép nhân đôi điểm sử dụng thuật toán 3.9 và 3.11 dựa trên thuật toán nhân kép SIMD. Ngoài ra, để tìm NAF(k) sẽ sử dụng thuật toán 3.5. 3.5. Thử nghiệm và đánh giá 3.5.1 Mô tả phương thực nghiệm, kịch bản Mã thực thi được viết bằng ngôn ngữ C và ngôn ngữ assembly sử dụng thư viện RELIC [54]. Mỗi chức năng được đo nhờ sử dụng hai vòng lặp lồng nhau, với n lần lặp của mỗi vòng: trong đó vòng lặp bên ngoài, thì các đầu vào được sinh ngẫu nhiên và vòng lặp bên trong sẽ thực hiện phép tính toán cần thiết với đầu vào lấy từ vòng lặp bên ngoài. Thời gian tổng cộng được thực hiện bởi thủ tục này, được đo bởi hàm clock_gettime theo đơn vị nano giây (nanosecond), sẽ được chia cho n2 để tạo kết quả thời gian trung bình của phép toán. Chúng ta chọn n = 128 để đo các phép toán mà có thời gian thực thi nhanh (như phép cộng, nhân trong số học trường hữu hạn), và n = 32 cho các phép toán có thời gian thực hiện lâu như phép nhân điểm. Về trình biên dịch và các tham số khi biên dịch: • Đối với thiết bị Xilinx Zynq (ARMv7) chạy hệ điều hành Linux nhúng, luận án sử dụng trình biên dịch arm-xilinx-linux-gnueabi-gcc với tùy chọn được thiết lập khi biên dịch như sau: arm-xilinx-linux-gnueabi-gcc -O2 -g -mcpu=cortex-a9 -march=armv7-a -mfpu=neon -mfloat-abi=softfp -marm -Deb_choose=eb_choose_asm -DCORTEX=9 • Đối với thiết bị NXP IMX8M Kit (ARMv8) chạy hệ điều hành Linux nhúng, luận án sử dụng trình biên dịch aarch64-linux-gnu-gcc phiên bản 64bit với các tùy chọn được thiết lập khi biên dịch như sau: aarch64-linux-gnu-gcc -pipe -std=c99 -Wall -O2 -g -march=armv8-a+crypto+crc - mtune=cortex-a53
  5. 106 /* Trường hợp 2: Đo thời gian thực hiện 2 phép nhân song song sử sụng NEON */ BENCH_BEGIN("fp_mul_dual_neon") { fp_rand(a); fp_rand(b); BENCH_ADD(fp_mul_dual_neon(c, d, a, b, a, b)); } BENCH_END; Kịch bản tiến hành đánh giá hiệu quả: Sau khi cài đặt thuật toán đề xuất, luận án tiến hành đánh hiệu quả của thuật toán so với thuật toán chưa cải tiến (thuật toán mặc định trong thư viện RELIC). Các so sánh được lần lượt chạy trên hai nền vi xử lý ARMv7 và ARMv8 (lưu ý là thực nghiệm ở đây không so sánh kết quả của thuật toán đề xuất giữa hai nền vi xử lý ARMv7 và ARMv8). Dưới đây là kết quả chạy thuật toán đề xuất (sử dụng thành phần NEON/C) và thuật toán mặc định (viết bằng ngôn ngữ C) trong trường GF(P) và trên đường cong Curve NIST-P256. 3.5.2 Thử nghiệm trên ARMv7 Các kết quả thử nghiệm sau đây được thực hiện trên nền tảng phần cứng: Xilinx Zynq Kit [49] với vi xử lý ARMv7 có tốc độ 1.3 GHz, chạy hệ điều hành Linux nhúng. Công cụ phát triển được sử dụng cho thử nghiệm là arm-xilinx-linux-gnueabi-gcc, phiên bản 4.8.3 để biên dịch chương trình. Luận án thực hiện các thử nghiệm cho thuật toán nhân đã đề xuất đối với ba đường cong: Curve NIST-P256, Curve NIST- P384, và Curve NIST-P521. Các kết quả thử nghiệm với ARMv7 được trình bày trong các Bảng 3.5, 3.6, và 3.7. Bảng 3.5 là kết quả thực hiện với các phép toán số học trên 푭풑. Bảng 3.6 là kết quả thực hiện với phép toán số học điểm trên đường cong 푬(푭풑). Bảng 3.7 là kết quả thực hiện với các hàm nguyên thủy mật mã dựa trên đường cong 푬(푭풑). Sau bảng thống kê, là các hình biểu đồ so sánh hiệu quả thực thi của các phép toán (số học, giao thức) trên đường cong elliptic trong hai trường hợp: • Khi tích hợp thuật toán đề xuất (nhân kép) thể hiện bằng màu xanh
  6. 108 với thuật toán đề xuất (sử dụng thành phần NEON) nhanh hơn khoảng từ 20 đến 30% so với thuật toán mặc định trong thư viện RELIC. Bảng 3.6: Thời gian thực hiện của phép toán số học điểm trên ARMv7 Độ dài Phép toán số học Thời gian (103 nano giây) Tỷ số bit (퐹 ) Nhân kép Nhân tuần tự (nhân kép / nhân tuần tự) 256 Cộng điểm (Add) 43 57.2 0.75 Nhân đôi điểm (Dbl) 21.8 30.3 0.72 Nhân vô hướng (k.P) 8742 10770 0.81 384 Cộng điểm (Add) 81.5 107.8 0.76 Nhân đôi điểm (Dbl) 40.6 57.3 0.71 Nhân vô hướng 23672 29476 0.80 521 Cộng điểm (Add) 176.5 238.5 0.74 Nhân đôi điểm (Dbl) 87.8 125.2 0.70 Nhân vô hướng (k.P) 68243 85689 0.80 Như trình bày trên Bảng 3.7 là đánh giá hiệu quả thực thi của hai giao thức mật mã (ECDH, ECDSA) khi đã tích hợp thuật toán đề xuất (dựa trên NEON) và khi thực thi giao thức nguyên thủy trong thư viện RELIC. Trên nền ARMv7, các tính hợp thuật toán đề xuất cho giao thức ECDH và ECDSA tăng khoảng từ 10% đến 20% so với nguyên thủy. Bảng 3.7: Thời gian thực hiện của tính toán trong giao thức ECDSA và ECDH trên ARMv7 Độ dài Giao thức dựa trên Thời gian (106 nano giây) Tỷ số bit (퐹 ) Nhân kép Nhân tuần tự (nhân kép / nhân tuần tự) 256 ECDH 9.0 11.2 0.8 ECMQV 12.1 14.2 0.85 ECDSA Sig 4.9 5.3 0.92
  7. 110 10^6 ns ECDSA Ver (ARMv7) 100 80 60 Nhân kép 40 Nhân tuần tự 20 0 256-bit 384-bit 521-bit Hình 3.6: So sánh thời gian thực hiện của thuật toán kiểm tra chữ ký số ECDSA trên ARMv7 3.5.3 Thử nghiệm trên ARMv8 Các kết quả thử nghiệm sau đây được thực hiện trên nền tảng phần cứng: NXP IMX8M Kit [47] (vi xử lý ARMv8 tốc độ 1.5 GHz) chạy hệ điều hành Linux nhúng. Luận án sử dụng công cụ phát triển aarch64-linux-gnu-gcc để biên dịch chương trình. Các thử nghiệm được thực hiện cho thuật toán nhân đã đề xuất và thuật toán mặc định trong thư viện RELIC đối với ba đường cong: Curve NIST-P256, Curve NIST-P384, và Curve NIST-P521. Các kết quả thử nghiệm với ARMv8 được trình bày trong các Bảng 3.8, 3.9, và 3.10. Bảng 3.8 là kết quả thực hiện với các phép toán số học trên 푭풑. Bảng 3.9 là kết quả thực hiện với phép toán số học điểm trên đường cong 푬(푭풑). Bảng 3.10 là kết quả thực hiện với các hàm nguyên thủy mật mã dựa trên đường cong 푬(푭풑) với ARMv8. Như trình bày trên Bảng 3.8 là thử nghiệm đánh giá so sánh giữa thời gian thực hiện một phép nhân kép và thời gian thực hiện hai phép nhân (Mul) hoặc hai phép bình phương (Sqr) tuần tự (phép toán mặc định trong thư viện RELIC). Kết quả ở cột cuối cùng cho ta thấy, đối với phép nhân và phép bình phương: thuật toán đề xuất nhanh hơn lần lượt là khoảng 40% và 25% so với thuật toán mặc định trong thư viện RELIC. Bảng 3.8: Thời gian thực hiện của phép toán số học trên ARMv8 Độ dài Phép toán số Thời gian (103 nano giây) Tỷ số bit học trên Fp Nhân kép Nhân tuần tự
  8. 112 thi giao thức nguyên thủy trong thư viện RELIC. Trên nền ARMv8, các tính hợp thuật toán đề xuất cho giao thức ECDH và ECDSA tăng khoảng từ 10% đến 20% so với nguyên thủy. Bảng 3.10: Thời gian thực hiện của tính toán trong giao thức ECDSA và ECDH trên ARMv8 Độ dài Giao thức dựa trên Thời gian (106 nano giây) Tỷ số bit (퐹 ) Nhân kép Nhân tuần tự (nhân kép / nhân tuần tự) 256 ECDH 3.4 4.2 0.81 ECMQV 4.6 5.3 0.86 ECDSA Sig 1.8 2.0 0.90 ECDSA Ver 4.7 5.5 0.85 384 ECDH 9.7 12.6 0.77 ECMQV 12.8 15.8 0.81 ECDSA Sig 5.1 5.8 0.88 ECDSA Ver 13.0 16.0 0.81 521 ECDH 28.6 34.8 0.82 ECMQV 37.8 43.1 0.88 ECDSA Sig 14.7 16.0 0.92 ECDSA Ver 37.1 42.9 0.86 10^6 ns ECDH (ARMv8) 40 30 20 Nhân kép Nhân tuần tự 10 0 256-bit 384-bit 521-bit Hình 3.7: So sánh thời gian thực hiện của giao thức ECDH trên ARMv8
  9. 114 không liền kề aNAF mới của số k, luận án đã đề xuất rút gọn một phép tính bình phương khi thực hiện phép “bình phương – nhân” đối với phép tính lũy thừa k trên các trường hữu hạn, hoặc tương ứng một phép tính gấp đôi khi thực hiện phép “gấp đôi - cộng” trong phép nhân điểm trên đường cong elliptic. Dựa trên đặc điểm SIMD trên vi xử lý ARM, luận án đã đề xuất cải tiến thuật toán cộng điểm và nhân đôi điểm nhờ phương pháp nhóm theo từng cặp phép nhân, theo cặp phép bình phương hoặc kết hợp cặp của phép nhân và phép bình phương. Các kết quả thực nghiệm đã chứng tỏ hiệu quả của thuật toán đề xuất như sau: - Tăng khoảng từ 20% đến 30% đối với phép toán cơ bản (cộng, nhân đôi, nhân vô hướng) so với thuật toán mặc định trong thư viện RELIC - Tăng từ 10% đến 20% trong các tính toán của giao thức ECDH và ECDSA so với các tính toán mặc định trong thư viện RELIC. Các thực nghiệm đánh giá kết quả được so sánh trên cùng một nền tảng phần cứng (ARMv7 hoặc ARMv8) và phần mềm
  10. 116 được thuật toán nhân có chi phí tốt nhất trong các trường hợp cụ thể cũng như đưa ra công thức để xác định chi phí của thuật toán đó. Thuật toán đề xuất đã được kiểm chứng về tính hiệu quả trên nền vi xử lý nhúng ARMv7 và ARMv8. - Đề xuất, cải tiến thuật toán nhân vô hướng (nhân giữa một điểm và một số nguyên dương) của hệ mật đường cong Elliptic trên trường nguyên tố dựa trên đề xuất cải tiến thuật toán NAF và đề xuất nâng cao hiệu quả của các phép toán số học (cộng điểm, nhân đôi điểm) theo phương pháp song song hai phép nhân. B. Đánh giá ưu nhược điểm của các đề xuất trong luận án và hướng phát triển tiếp theo của đề tài ❖ Ưu điểm: Các đề xuất nâng cao hiệu quả về sử dụng mật mã đường cong elliptic trên thiết bị nhúng trong luận án sẽ góp phần tăng cường khả năng bảo mật thông tin trên các thiết bị nhúng. Đặc biệt có ý nghĩa trong lĩnh vực an ninh quốc phòng: Khả năng mềm dẻo ở tùy biến tham số, bản địa hóa thuật toán, khả năng đáp ứng thời gian thực đối với các phần mềm bảo mật. ❖ Nhược điểm và hạn chế: Thuật toán nhân phân tầng được xây dựng trên trên cơ sở hai thuật toán cơ bản là thuật toán theo phương pháp phổ thông và thuật toán nhân theo phương pháp Karatsuba. Tuy nhiên, cần có những nghiên cứu đề xuất thuật toán phân tầng dựa trên các thuật toán cơ sở khác cũng như cho phép toán khác như: modulo, bình phương ❖ Đề xuất hướng nghiên cứu tiếp theo: o Nghiên cứu đề xuất thuật toán phân tầng dựa trên các thuật toán cơ sở khác cũng như cho phép toán khác trong trường hữu hạn: modulo, bình phương o Nâng cao hiệu quả các các lược đồ, thuật toán mật mã dựa trên ECC cho các hệ vi xử lý nhúng khác như dòng ARM Cortex-M. o Nghiên cứu đảm bảo an toàn chống lại tấn công kênh kề cho các thuật toán mật mã của hệ mật ECC hoạt động trên nền vi xử lý nhúng.
  11. 118 TÀI LIỆU THAM KHẢO Tiếng Anh [1]. Tammy Noergaard, “Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers”, Newnes, 2nd edition, 2012. [2]. ARM Holdings, “Q3 2020 roadshow slides”, 2020. [Online]: Accessed on 26 Aug. 2021, Available: presentations/2020/arm-roadshow-slides_q3fy2020_01.pdf. [3]. Jason D. Bakos, “Embedded Systems ARM Programming and Optimization”, Morgan Kaufmann, 1st edition, 2015. [4]. ARM, “Introducing neon development article”, ARM Limited, 2009. [5]. Sarah L. Harris, David Harris, Digital Design and Computer Architecture ARM Edition, Morgan Kaufmann, 1st edition 2015. [6]. A. Weimerskirch, C. Paar, “Generalizations of the karatsuba algorithmfor efficient implementations,” University of Ruhr, Bochum, Germany, Tech. Rep., 2003. [7]. Darrel Hankerson, Alfred Menezes, Scott Vanstone, Guide to elliptic Curve Cryptography , Springer , 2004. [8]. National Institute of Standards and Technology (NIST), “Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography”, Gaithersburg, Technical Report, 2018. [9]. National Institute of Standards and Technology (NIST), “DSS Digital Signature Standard (DSS)”, Federal Information Processing Standards Publication 186-2, 2000. [10]. Mohit Arora, “Embedded System Design - Introduction to SoC System Architecture”, ISBN 978-0-9972972-0-1, Learning Bytes Publishing, 2016. [11]. Tammy Noergaard, “Embedded Systems Architecture - A Comprehensive Guide for Engineers and Programmers”, ISBN: 0-7506-7792-9, Second edition, Copyright © Elsevier Inc, 2013. [12]. M. Amara, A. Siad, “Hardware Implementation of Elliptic Curve Point Multiplication over GF(2 m ) for ECC protocols”, International Journal for Information Security Research (IJISR), Vol. 2, No. 1, 2012, pp.106-112. [13]. Shuai Liu, Lei Ju, Xiaojun Cai, Zhiping Jia, Zhiyong Zhang High, Performance FPGA Implementation of Elliptic Curve Cryptography over Binary Fields, in Proc. of 13th IEEE Int. Conf. on Trust, Security and Privacy in Computing and Communications, Beijing, China, Sept. 2014.
  12. 120 [26]. Paul G. Comba, “Exponentiation cryptosystems on the IBM PC”, IBM Systems Journal, Vol. 29, No. 4, 1990, pp. 526-538. [27]. ARM, Cortex™-A9 Technical Reference Manual, ARM Limited, 2010 [28]. ARM, Cortex-A9 NEON Media Processing Engine Technical Reference Manual Revision: r4p1, ARM Limited, 2012 [29]. J. Lopez and R. Dahab, “High-speed software multiplication in F(2m)”, Int. Conf. on Cryptology in India, Springer, 2000, pp. 203-212. [30]. H. Seo, Z. Liu, J. Choi, and H. Kim. “Karatsuba-block-comb technique for elliptic curve cryptography over binary fields”, Journal of Security and Communication Networks, vol.8, no.17, Nov. 2015, pp. 3121-3130. [31]. C.Y. Lee, C.C. Fan, J. Xie, S.M. Yuan. “Efficient Implementation of Karatsuba Algorithm based Three-Operand Multiplication over Binary Extension Field”, IEEE Access. Vol.6, June 2018, pp. 38234-38242. [32]. Darrel Hankerson, Julio López Hernandez, and Alfred Menezes, Software Implementation of Elliptic Curve Cryptography over Binary Fields, in Proc. of Int. Workshop on Cryptographic Hardware and Embedded Systems, CHES 2000, Springer, 2000, pp. 1-24. [33]. R.C. Marquez, A.J.C. Sarmiento, S. Sánchez-Solano, “Speeding up elliptic curve arithmetic on ARM processors using NEON instructions”, RIELAC, vol. 41, no.3, Sept.–Dec. 2020, ISSN: 1815-5928, pp. 1-20. [34]. Z. Liu, J. Groschdl, Z. Hu, K. Jrvinen, H. Wang, and I. Verbauwhede, “Elliptic curve cryptography with efficiently computable endomorphisms and its hardware implementations for the internet of things,” IEEE Trans. Computers, vol. 66, no. 5, May 2017, pp. 773–785 [35]. H.Cheng, J. Grosschaedl, J. Tian, P.B. Ronne, P.Y. Ryan, “High-Throughput Elliptic Curve Cryptography Using AVX2 Vector Instructions”, Intl. Conf. on Selected Areas in Cryptography (SAC 2020), LNCS, vol. 12804, Springer, 2020, pp. 698-719. [36]. J.W. Bos, P. L. Montgomery, D. Shumow, G. M. Zaverucha, “Montgomery multiplication using vector instructions”, In Proc. of Conf. Selected Areas in Cryptography (SAC 2013), LNCS Vol. 8282, Springer, 2013, pp. 471-489. [37]. A. Faz-Hernandez, P. Longa, A.H. Sanchez, “Efficient and secure algorithms for glv-based scalar multiplication and their implementation on GLV-GLS curves”, in Proc. of RSA Conference: Topics in Cryptology CT-RSA, LNCS Vol. 8366, Springer, 2014, pp. 1-27.
  13. 122 [49]. Xilinx, Zynq-7000 SoC ZC702 Evaluation Kit. [Online]: Accessed on 10 Aug. 2021, g.html [50]. NXP, RD-IMX6Q-SABRE: SABRE Board for Smart Devices Based on the i.MX 6Quad Applications Processors. [Online]: Accessed on 10 Aug. 2021, development-boards/sabre-board-for-smart-devices-based-on-the-i.mx- 6quad-applications-processors:RD-IMX6Q-SABRE [51]. NXP, Evaluation Kit for the i.MX 8M Mini Applications Processor. [Online]: Accessed on 10 Aug. 2021, development-boards/evaluation-kit-for-the-i-mx-8m-mini-applications- processor:8MMINILPD4-EVK [52]. SAMSUNG, Samsung Galaxy Tab S2 9.7. [Online]: Accessed on 10 Aug. 2021, [53]. BlueKrypt, Cryptographic Key Length Recommendation. [Online]: Accessed on 10 Aug. 2021, [54]. RelicToolKit, [Online]: Accessed on 10 Aug. 2021, toolkit [55]. OpenSSL Cryptography and SSL/TLS Toolkit. [Online]: Accessed on 10 Aug. 2021, [56]. Daniel J. Bernstein, Tanja Lange, etal., "Explicit-Formulas Database," [Online]. Available from: [57]. IETF, Internet Key Exchange Protocol Version 2 (IKEv2), RFC 5996. [Online]: Accessed on 10 Aug. 2021, [58]. IETF, The Transport Layer Security (TLS) Protocol Version 1.3, RFC 8446. [Online]: Accessed on 10 Aug. 2021, [59]. OpenVPN. [Online]: Accessed on 10 Aug. 2021, [60]. OpenMP. [Online]: Accessed on 10 Aug. 2021, [61]. The GNU Multiple Precision Arithmetic Library (GMP). [Online]: Accessed on 10 Aug. 2021,