Chương 1 đi sâu phân tích các yêu cầu cần bảo mật dữ liệu trên nền thiết bị nhúng, các giải pháp nâng cao hiệu quả hệ mật khóa công khai Elliptic trên nền các thiết bị nhúng (cải tiến thuật toán, sử dụng các tham số đặc biệt; sử dụng các thành phần tính toán nhanh GPU, DSP, FPGA; sử dụng các đồng xử lý. Trong các giải pháp này, luận án cũng đã phân tích những ưu điểm và hạn chế của từng phương pháp. Trên cơ sở đó, luận án sẽ tập trung vào đề xuất hướng nghiên cứu của luận án. Nâng cao hiệu quả của phép nhân số học trong trường nhị phân trên vi xử lý ARM Nội dung thứ nhất của chương 2 là sẽ nghiên cứu, phân tích và đánh giá về mặt hiệu năng của một số phương pháp để thực hiện phép tính nhân trong trường hữu hạn (cả trường nhị phân và trường nguyên tố).
Nội dung chính của chương này sẽ nghiên cứu và đề xuất: a)Nghiên cứu, đề xuất phương pháp đánh giá chi phí của thuật toán nhân số lớn mà chỉ phụ thuộc vào phép cộng cơ bản, b) Phương pháp nhân hai số hạng trên trường hữu hạn, gọi là phương pháp phân tầng. Với phương pháp phân tầng, ta có thể xây dựng được thuật toán nhân có chi phí tốt nhất trong các trường hợp cụ thể. Dựa trên thuật toán nhân phân tầng đề xuất, các đề xuất áp dụng cụ thể để nhân hai đa thức trong trường nhị phân dựa trên kết hợp giữa thuật toán Karatsuba, bộ nhân 128-bit và bộ nhân 192-bit trên vi xử lý ARMv7 và ARMv8. Nâng cao hiệu quả phép nhân vô hướng của hệ mật ECC trong trường nguyên tố trên vi vử lý ARM Chương 3 của luận án tập trung các giải pháp cải tiến hiệu năng cho các thuật toán mật mã dựa trên đường cong Elliptic trên trường số nguyên tố dựa trên hai cải tiến là: Đề xuất cải tiến thuật toán NAF và giải pháp nâng cao hiệu quả của các phép toán số học (cộng, nhân đôi và nhân vô hướng) trên đường cong Elliptic trong trường số nguyên tố bằng phương pháp song song hai phép nhân đồng thời.
TỔNG QUAN CÁC VẤN ĐỀ NGHIÊN CỨU 1. Hệ thống 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: Power Management Clocks Reset Control Embedded Flash Interrupt Control System RAM Embedded Processor Peripherals ROM Sensors Analog I/0s Application Specific Hình 1.1: Các thành phần chính trong một phần cứng nhúng 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) 7 • 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) … Phần mềm ứng dụng và hệ điều hành: Do không có thiết bị ổ cứng trong hệ thống nhúng, nên mã chương trình được lưu ở trong bộ nhớ Flash hoặc bộ nhớ ROM. Trong quá trình thực thi một chương trình, không gian nhớ cho các biến được cấp pháp trong bộ nhớ RAM. 8 Các ứng dụng hoạt động trên hệ điều hành cơ sở hoặc trên một hệ điều hành thời gian thực RTOS (Real-Time Operating System).
Các hệ thống nhúng rất đa dạng, song có đặc điểm chung là được cấu thành từ một bộ xử lý nhúng chuyên dụng, phần mềm sụn (Firmware) lưu trong thành phần nhớ ROM, hoặc Flash và các thành phần đầu vào, đầu ra [1, 10]. Kiến trúc của một hệ thống nhúng được tập trung xung quanh một vi điều khiển (microcontroller), còn được gọi là MCU (MicroController Unit) được tích hợp trên một mạch chứa bộ xử lý, RAM bộ nhớ Flash, và các thành phần lõi khác. Trên thị trường cung cấp nhiều sự lựa chọn khác nhau liên quan đến kiến trúc, hãng, khoảng giá, đặc điểm và các nguồn tài nguyên được tích hợp. Những thiết kế thông thường có đặc điểm là không đắt, tiêu thụ năng lượng thấp, nguồn tài nguyên thấp và hệ thống trên một mạch tích hợp đơn, vì những lý do này mà chúng thường được gọi là Hệ thống trên Chip (SoC).
Có nhiều họ vi xử lý được dùng cho các hệ thống nhúng tới nay, song các bộ vi xử lý ARM là phổ biến nhất cho tới nay [1][2]. Theo thống kê của Arm Holdings, đã có trên 184 tỷ vi xử lý dựa trên ARM đã được sử dụng trên toàn thế giới tính đến năm 2020 [2]. Các vi xử lý này được dùng cho các thiết bị di động, thiết bị IoT, thiết bị nhúng, hệ thống điều khiển thời gian thực… Mặt khác, như đã trình bày ở trên, phần mềm nhúng được thiết kế cần phù hợp với kiến trúc phần cứng cụ thể. Do vậy, hệ mật mã trong luận án này được phát triển dựa trên bộ xử lý ARM, là nền tảng phần cứng cho các hệ thống nhúng đang được sử dụng phổ biến cho các thiết bị nhúng hiện nay.
Trong phần tiếp theo, luận án trình bày về đặc trưng của kiến trúc ARM làm cơ sở cho việc xây dựng và triển khai các thuật toán của luận án. Bộ vi xử lý ARM trong hệ thống nhúng 1. Kiến trúc ARM (Advanced RISC Machine) ARM là viết tắt của Advanced RISC machines, thực chất là một kiến trúc bộ xử lý sử dụng tập lệnh rút gọn (RISC = Reduced Instructions Set Computer). Kiến trúc RISC tối ưu hóa các đường dẫn trên mạch, giúp giảm mức tiêu thụ điện năng, tiết kiệm diện 9 tích, yêu cầu tản nhiệt thấp, cung cấp mức hiệu suất vượt trội, lý tưởng cho các thiết bị nhỏ gọn có tài nguyên hạn chế.
ARM được phát triển bởi Arm Holdings, Ltd. Kiến trúc ARM có một số đặc điểm chính sau [3]: • Vi xử lý ARM có mười sáu thanh ghi 32 bit (r0-r15). • Hỗ trợ các chỉ lệnh có điều kiện. Các cờ mã điều kiện N, Z, C, V tương ứng N = Kết quả âm từ ALU; Z = kết quả zero từ ALU; C = nhớ ra từ thao tác ALU; V = tràn từ phép toán ALU.
• Hỗ trợ hai tập chỉ lệnh là ARM và Thumb2. • Được tích hợp đơn vị xử lý SIMD và VFP (Vector Floating Point) hỗ trợ tập chỉ lệnh NEON và VFPv3 tương ứng. Các vi xử lý ARM trong thực tế Các phiên bản ARM đã được phát triển trải rộng từ ARMv1 (năm 1985) đến ARMv8 (năm 2012) [5], và hiện nay mới nhất ARMv9 (năm 2021). Các bộ vi xử lý cao cấp ARMv7 đã chiếm lĩnh thị trường điện thoại di động và máy tính bảng.
Cortex-A9 được sử dụng rộng rãi trong SoC của các điện thoại di động, gồm 2 lõi vi xử lý Cortex-A9, bộ tăng tốc đồ họa, modem 3G/4G, các thiết bị ngoại vi khác.2 thể hiện sơ đồ khối của dòng vi xử lý Cortex-A9. Các giai đoạn pipeline của vi xử lý loại này gồm: giải mã chỉ lệnh, thực hiện đổi tên thanh ghi, thực thi chỉ lệnh ở dạng không theo trật tự.2: Sơ đồ khối của vi xử lý Cortex-A9 10 Kiến trúc ARMv8 là kiến trúc 64-bit. Các dòng vi xử lý Cortex-A53 và Cortex-A57 có cơ chế pipeline tương tự như Cortex-A7 và -A15 tương ứng. Kiến trúc mở rộng NEON cho ARM Kiến trúc tính toán song song đơn lệnh-đa dữ liệu (SIMD = Single Instruction Multiple Data) được đưa vào các bộ vi xử lý ARM từ phiên bản 6 (ARMv6).
Từ phiên bản 7 (ARMv7), bộ vi xử lý ARM hỗ trợ engine tích hợp một số thuật toán đã được cứng hóa sẵn được gọi là thành phần NEON. ARM NEON là thành phần mở rộng kiến trúc SIMD cho các bộ vi xử lý ARM họ Cortex-A nhằm tăng cường hỗ trợ cho các ứng dụng đa phương tiện, đặc biệt trong các thiết bị di động. NEON thực chất là thành phần đồng xử lý được tích hợp vào trong các dòng vi xử lý ARM [4], điển hình như Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A53… NEON hỗ trợ các chỉ lệnh SIMD đặc biệt trên các phần tử vector có cùng kiểu dữ liệu và mỗi chỉ lệnh sẽ thực hiện cùng một phép toán trên tất các các làn (lane) của vector đó [19].3: Phép toán cộng 8 bit trên 4 làn sử dụng 1 chỉ lệnh SIMD trên ARMv6 Hình 1.