Bối cảnh và vấn đề nghiên cứu

Sự phát triển mạnh mẽ của mạng lưới vạn vật kết nối (Internet of Things - IoT) với hàng tỷ thiết bị thông minh kết nối đã đặt ra yêu cầu cấp thiết về vấn đề an toàn và bảo mật phần cứng. Trong môi trường IoT, các thiết bị đầu cuối thường có tài nguyên tính toán và năng lượng bị giới hạn, nhưng lại phải đối mặt với các nguy cơ an ninh nghiêm trọng như truy cập trái phép, vi phạm dữ liệu, giả mạo thiết bị và các cuộc tấn công mạng nguy hiểm. Việc thực thi các giải thuật mật mã phức tạp thuần túy bằng phần mềm trên các vi điều khiển truyền thống thường làm suy giảm hiệu năng hệ thống và tiêu tốn nhiều năng lượng.

Trong bối cảnh đó, kiến trúc tập lệnh mở RISC-V (Instruction Set Architecture - ISA), khởi nguồn từ Đại học California, Berkeley vào năm 2010, đã nổi lên như một giải pháp thay thế hiệu quả cho các kiến trúc vi xử lý sở hữu độc quyền. Tính chất mở, minh bạch và khả năng tùy biến cao của RISC-V cho phép các nhà thiết kế tích hợp thêm các tập lệnh chuyên dụng để tăng tốc các phép toán mã hóa trực tiếp ở tầng phần cứng với chi phí thấp.

Khóa luận tốt nghiệp của các tác giả Lê Đức Hồng Ân và Hồ Viết Anh, dưới sự hướng dẫn của TS. Phạm Hoài Luân và TS. Lâm Đức Khai tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM (2024), tập trung giải quyết các mục tiêu và nhiệm vụ nghiên cứu sau:

  1. Thiết kế và hiện thực một bộ đồng xử lý (Co-Processor) 64-bit dựa trên kiến trúc RISC-V nhằm tăng tốc phần cứng cho các thuật toán mật mã hóa.
  2. Tối ưu hóa kiến trúc mạch để hiện thực thành công 8 giải thuật mật mã phổ biến, bao gồm cả tiêu chuẩn quốc tế và tiêu chuẩn quốc gia: SHA2-256, SHA2-512, SM3, ChaCha20, BLAKE2s, Salsa20, SM4 và AES.
  3. Tích hợp bộ đồng xử lý RISC-V với vi xử lý máy chủ ARM qua chuẩn giao tiếp AXI4 Bus để tạo thành hệ thống SoC hoàn chỉnh.
  4. Triển khai và kiểm thử thực nghiệm trên phần cứng FPGA Xilinx Zynq UltraScale+ ZCU102, đạt tần số hoạt động 210 MHz mà không phát sinh lỗi vi phạm thời gian (timing violations).

Đối tượng nghiên cứu của đề tài là kiến trúc vi xử lý RISC-V 64-bit, các mô-đun phần cứng tăng tốc mật mã, giao thức truyền thông AXI4 và chuỗi công cụ phần mềm RISC-V GNU Toolchain. Phạm vi thực nghiệm được giới hạn trên nền tảng bo mạch FPGA ZCU102 thông qua công cụ tổng hợp và hiện thực Xilinx Vivado 2021.2.


Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng nền tảng dựa trên các khung lý thuyết về kiến trúc máy tính, thuật toán mật mã và giao tiếp hệ thống trên vi mạch:

  • Kiến trúc tập lệnh RISC-V: Tập lệnh 32-bit với 7-bit opcode cố định, tuân thủ nguyên tắc thanh ghi - thanh ghi (load/store) và định dạng chuẩn (R-format, I-format, S-format, U-format). Tập lệnh cơ bản RV32I gồm 37 lệnh xử lý số nguyên, rẽ nhánh và truy xuất bộ nhớ, kết hợp cùng tập lệnh mở rộng RV64I hỗ trợ tính toán trên số nguyên 64-bit và các thanh ghi 64-bit.
  • Các thuật toán băm mật mã (Cryptographic Hash Algorithms):
    • SHA-256 và SHA-512: Thuộc họ SHA-2 của NIST/NSA; SHA-256 xử lý khối dữ liệu 512-bit qua 64 vòng lặp để tạo giá trị băm 256-bit; SHA-512 xử lý khối 1024-bit qua 80 vòng lặp trên các từ 64-bit để tạo giá trị băm 512-bit.
    • SM3: Tiêu chuẩn băm mật mã quốc gia của Trung Quốc (SAC), xử lý khối 512-bit qua 64 vòng nén với các hàm logic $FF$ và $GG$ để tạo mã băm 256-bit.
    • BLAKE2s: Thuật toán băm tốc độ cao tối ưu cho hệ thống 32-bit, xử lý khối 512-bit qua 10 vòng lặp dựa trên hàm nén $G$ với các phép toán cộng, XOR và dịch vòng.
  • Các thuật toán mã hóa đối xứng (Khối và Luồng):
    • Salsa20 và ChaCha20: Mật mã luồng do Daniel J. Bernstein phát triển; quản lý trạng thái ma trận $4 \times 4$ gồm 16 từ 32-bit qua 20 vòng lặp dựa trên hàm biến đổi Quarter Round (QR).
    • AES (Advanced Encryption Standard): Tiêu chuẩn mã hóa khối NIST (2001), kích thước khối 128-bit với các phép biến đổi SubBytes, ShiftRows, MixColumns và AddRoundKey trên trường hữu hạn $GF(2^8)$.
    • SM4: Tiêu chuẩn mã hóa khối quốc gia Trung Quốc (OSCCA 2006), kích thước khối 128-bit, khóa 128-bit, thực thi qua 32 vòng lặp.
  • Giao thức kết nối hệ thống AXI4: Chuẩn giao diện bus điểm - điểm thuộc họ AMBA 4 với 5 kênh độc lập: địa chỉ ghi (AW), dữ liệu ghi (W), phản hồi ghi (B), địa chỉ đọc (AR) và dữ liệu đọc (R).

Phương pháp nghiên cứu được nhóm tác giả áp dụng bao gồm:

  • Phương pháp đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-design): Phân chia cấu trúc hệ thống thành hai phần, trong đó CPU ARM đóng vai trò điều khiển, cấp phát dữ liệu và thẩm định, còn bộ Co-RISC-V đảm nhiệm tính toán nặng về mật mã.
  • Phương pháp thiết kế phần cứng hợp nhất (Hardware Sharing): Tối ưu hóa diện tích mạch bằng cách gộp chung logic tính toán của các giải thuật có cấu trúc tương đồng vào cùng một mô-đun phần cứng.
  • Phương pháp tùy biến tập lệnh (Custom ISA): Bổ sung chỉ thị chuyên dụng vào RISC-V ISA và tùy biến chuỗi công cụ RISC-V GNU Toolchain (GCC, GNU ld, GDB).
  • Phương pháp kiểm thử thực nghiệm trên FPGA: Nạp thiết kế lên kit FPGA ZCU102, sử dụng khối bắt tín hiệu nội logic (Integrated Logic Analyzer - ILA Debug) kết hợp giao diện dòng lệnh UART Terminal để so sánh kết quả trực tiếp với CPU ARM.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình SoC dị thể, trong đó bộ xử lý RISC-V 64-bit đóng vai trò như một bộ đồng xử lý (Co-Processor) kết nối với hệ thống xử lý ARM thông qua AXI BUS.

                    HỆ THỐNG SOC DỊ THỂ (FPGA ZCU102)
+-----------------------------------------------------------------------+
|  ARM CPU (Host)                                                       |
|  - C Program / Controller                                             |
|  - Data Generator & SoC Driver                                        |
|  - Standard Crypto Verifier                                           |
+-----------------------------------+-----------------------------------+
                                    |
                             AXI4 BUS INTERFACE
             (AW, W, B, AR, R Channels / DMA / PIO Instructions)
                                    |
+-----------------------------------+-----------------------------------+
|  CO-PROCESSOR RISC-V 64-BIT                                           |
|  - Instruction Memory (IM) & Data Memory (DM)                         |
|  - Custom Cryptographic Execution Units:                              |
|    + Buffer Module (Lưu trữ và điều phối dữ liệu)                     |
|    + Combined Hash Module: SHA-256 / SHA-512 / SM3                    |
|    + Combined Stream/Hash Module: ChaCha20 / BLAKE2s / Salsa20        |
|    + Dedicated Block Cipher Modules: AES-128 & SM4                    |
+-----------------------------------------------------------------------+

Kiến trúc các khối tính toán phần cứng

  1. Bộ đệm dữ liệu (Buffer Module): Thiết kế để lưu trữ dữ liệu trung gian và thực hiện mở rộng khối thông điệp cho các giải thuật băm và mã hóa luồng, bảo đảm luồng nạp dữ liệu liên tục cho các vòng lặp tính toán.
  2. Khối tích hợp SHA-256, SHA-512 và SM3: Tận dụng sự tương đồng về sơ đồ cập nhật trạng thái và cấu trúc hàm nén, nhóm tác giả thiết kế hợp nhất khối chức năng khối (Block Function) và hàm băm (Hash Function), cho phép lựa chọn chế độ xử lý thông qua tín hiệu điều khiển mà không cần nhân bản tài nguyên logic.
  3. Khối tích hợp ChaCha20, BLAKE2s và Salsa20: Dựa trên phân tích tương đồng giữa hàm nén $G$ của BLAKE2s và hàm Quarter Round (QR) của ChaCha20/Salsa20, hệ thống xây dựng khối tính 2 vòng lặp (2-round block) hợp nhất. Các phép toán cộng, XOR và xoay bit được cấu hình linh hoạt theo từng chế độ giải thuật.
  4. Khối tính toán chuyên dụng AES và SM4: Hiện thực các vòng biến đổi tuần tự (SubBytes, ShiftRows, MixColumns, AddRoundKey) với bảng tra S-box tối ưu trên FPGA, đảm bảo xử lý khối 128-bit với số chu kỳ xung nhịp tối thiểu.

Quy trình tùy biến tập lệnh RISC-V

Để hỗ trợ thực thi các mô-đun mật mã từ chương trình phần mềm, nhóm nghiên cứu đã tùy biến tập lệnh theo quy trình 5 bước:

  • Định nghĩa chỉ thị: Gán các mã Opcode tùy biến chưa sử dụng trong bảng mã RISC-V cho các tác vụ mật mã.
  • Mô tả Assembly: Xây dựng cú pháp hợp ngữ và các trường toán hạng ($rs1, rs2, rd, func3, func7$).
  • Phân nhóm chỉ thị: Xếp các lệnh mới vào nhóm tính toán ALU mật mã mở rộng.
  • Chỉnh sửa RISC-V GNU Toolchain: Cấu hình lại mã nguồn của GCC và Binutils để trình biên dịch nhận diện và sinh mã máy cho các chỉ thị mới.
  • Biên dịch và kiểm tra: Viết mã nguồn C nhúng lệnh Macro Assembly để gọi trực tiếp các chỉ thị tùy biến khi chạy trên Co-RISC-V.

Nội dung chính theo từng chương

Chương 1. Tổng quan đề tài

Chương này phân tích bối cảnh phát triển của IoT và tầm quan trọng của an toàn phần cứng. Tác giả tổng hợp lịch sử phát triển của kiến trúc mở RISC-V từ năm 2010 tại UC Berkeley, chỉ ra các hạn chế về hiệu năng và vi phạm chu kỳ thời gian trong các công trình nghiên cứu trước đây (như các nghiên cứu tối ưu hóa Curve25519 trên Cortex-M4 hay AES-GCM trên RISC-V). Từ đó, chương xác định mục tiêu thiết kế bộ đồng xử lý RISC-V 64-bit trên FPGA ZCU102 đạt tần số 210 MHz để thực thi chính xác 8 thuật toán mã hóa.

Chương 2. Cơ sở lý thuyết

Chương 2 trình bày có hệ thống các kiến thức nền tảng:

  • Cấu trúc kiến trúc RISC-V: Tập 32 thanh ghi nguyên ($x0$ đến $x31$), các định dạng lệnh (R, I, S, U) và tập lệnh RV32I/RV64I.
  • Nguyên lý hoạt động chi tiết của 8 thuật toán: 4 thuật toán băm (SHA-256, SHA-512, SM3, BLAKE2s) và 4 thuật toán mật mã khối/luồng (Salsa20, ChaCha20, AES, SM4).
  • Kiến trúc phối hợp hệ thống giữa CPU nhúng ARM và Co-RISC-V 64-bit qua bus AXI4 (phân tích chi tiết 5 kênh truyền dữ liệu và cấu hình AXI4-Full/AXI4-Lite).
  • Chuỗi công cụ hỗ trợ phát triển RISC-V GNU Toolchain (GCC, GNU ld, GDB) và quy trình mở rộng chỉ thị tùy biến.

Chương 3. Phương pháp thực hiện

Chương 3 tập trung vào các giải pháp thiết kế phần cứng và tích hợp hệ thống:

  • Thiết kế IP RISC-V chuyên dụng cho mật mã và khối Buffer lưu trữ dữ liệu trung gian.
  • Hiện thực mô-đun tính toán kết hợp SHA-256, SHA-512 và SM3 thông qua việc hợp nhất Block Function và Hash Function.
  • Hiện thực mô-đun tính toán kết hợp ChaCha20, BLAKE2s và Salsa20 dựa trên thiết kế khối xử lý 2 round dùng chung cho Quarter Round và hàm nén G.
  • Thiết kế mô-đun Cipher độc lập cho giải thuật AES-128 và SM4.
  • Thiết lập bảng tín hiệu Opcode và cấu trúc các trường tùy biến trong tập lệnh RISC-V; so sánh ưu nhược điểm giữa phương pháp Macro Assembly và chỉnh sửa trình biên dịch.

Chương 4. Kiểm tra và đánh giá kết quả hiện thực

Chương này mô tả kịch bản kiểm tra toàn diện trên phần cứng:

  • Xây dựng bộ thông điệp thử nghiệm (Message) tương ứng với độ lớn khối dữ liệu của từng giải thuật.
  • Kiểm thử chức năng: Đọc và so sánh kết quả tính toán giữa RISC-V và ARM thông qua Terminal và công cụ ILA Debug trên Vivado, xác nhận kết quả mã hóa và băm của 8 thuật toán đều chính xác.
  • Đánh giá thông số kỹ thuật: Tổng hợp tài nguyên phần cứng sau bước Implementation (LUT, Register, BRAM, DSP), thống kê số lượng chu kỳ xung nhịp (Cycles) xử lý trên mỗi block dữ liệu, đo đạc thông lượng (Throughput) và so sánh hiệu quả năng lượng với các kiến trúc CPU khác.

Chương 5. Kết luận và hướng phát triển

Chương cuối tóm tắt toàn bộ các kết quả đạt được của khóa luận: Hoàn thành thiết kế, hiện thực và kiểm thử thành công hệ thống Co-Processor RISC-V 64-bit trên FPGA ZCU102 với 8 giải thuật mật mã ở tần số 210 MHz. Đồng thời, tác giả đề xuất các định hướng mở rộng nghiên cứu trong tương lai.


Kết quả và đóng góp

Kết quả kỹ thuật đạt được

Hệ thống đã được hiện thực và kiểm chứng thành công trên bo mạch thực tế Xilinx Zynq UltraScale+ ZCU102 với các chỉ số kỹ thuật chính:

  • Tần số hoạt động: Đạt mức xung nhịp 210 MHz mà không gặp bất kỳ vi phạm nào về mặt thời gian (no timing violations), khắc phục được tình trạng trễ chu kỳ của một số nghiên cứu tham chiếu trước đó.
  • Tính chính xác chức năng: Cả 8 giải thuật (SHA2-256, SHA2-512, SM3, ChaCha20, BLAKE2s, Salsa20, SM4, AES) đều hoạt động chính xác khi đối sánh trực tiếp giữa kết quả xuất ra Terminal của Co-RISC-V và chương trình mẫu chạy trên ARM CPU, cũng như qua giám sát tín hiệu ILA Debug.
Thuật toán mật mã Loại thuật toán Kích thước khối dữ liệu (Block size) Độ dài khóa / Giá trị băm Mô-đun phần cứng trên RISC-V
SHA2-256 Băm mật mã (Hash) 512 bit 256 bit Khối tích hợp SHA2/SM3
SHA2-512 Băm mật mã (Hash) 1024 bit 512 bit Khối tích hợp SHA2/SM3
SM3 Băm mật mã (Hash) 512 bit 256 bit Khối tích hợp SHA2/SM3
BLAKE2s Băm mật mã (Hash) 512 bit 256 bit Khối tích hợp ChaCha/BLAKE2s/Salsa
ChaCha20 Mật mã luồng (Stream) 512 bit (16 words) Khóa 256 bit, Nonce 96 bit Khối tích hợp ChaCha/BLAKE2s/Salsa
Salsa20 Mật mã luồng (Stream) 512 bit (16 words) Khóa 256 bit, Nonce 64 bit Khối tích hợp ChaCha/BLAKE2s/Salsa
AES Mật mã khối (Block) 128 bit Khóa 128 / 192 / 256 bit Mô-đun Cipher AES chuyên dụng
SM4 Mật mã khối (Block) 128 bit Khóa 128 bit (32 rounds) Mô-đun Cipher SM4 chuyên dụng

Giải pháp và đóng góp mới của đề tài

  1. Kiến trúc đồng xử lý tối ưu: Đề xuất mô hình phối hợp hiệu quả giữa vi xử lý ARM và bộ đồng xử lý RISC-V qua AXI4 Bus, giải phóng vi xử lý chính khỏi các tác vụ tính toán mật mã nặng nề.
  2. Kỹ thuật chia sẻ tài nguyên mạch phần cứng: Khóa luận đã thiết kế thành công hai khối tính toán hợp nhất (SHA2/SM3 và ChaCha20/BLAKE2s/Salsa20), giúp tiết kiệm diện tích logic trên chip FPGA so với phương pháp thiết kế từng khối phần cứng riêng lẻ.
  3. Mở rộng tập lệnh RISC-V thực tế: Xây dựng hoàn chỉnh chuỗi tùy biến tập lệnh từ định nghĩa Opcode phần cứng đến cấu hình trình biên dịch GNU GCC, cung cấp giải pháp mở rộng tập lệnh có khả năng tái sử dụng cao.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung trình bày trong văn bản khóa luận, các hạn chế và hướng phát triển tiếp theo được xác định như sau:

  • Hạn chế: Hệ thống mới dừng lại ở việc hiện thực và đánh giá trên nền tảng mẫu FPGA ZCU102 với mô hình Co-Processor phụ thuộc vào bộ điều khiển ARM, chưa tiến hành đóng gói thành hệ vi mạch chuyên dụng độc lập (ASIC) hoặc kiểm thử trên các môi trường thiết bị biên IoT thực tế ngoài hiện trường.
  • Hướng phát triển tiếp theo:
    • Nghiên cứu và hiện thực thêm các thuật toán mật mã khóa công khai (Asymmetric Cryptography) như mật mã đường cong Elliptic (ECC) và RSA.
    • Tối ưu hóa sâu hơn về mặt diện tích mạch (LUT/Flip-Flop) và mức tiêu thụ năng lượng nhằm hướng tới việc sản xuất vi mạch chuyên dụng ASIC cho các thiết bị IoT pin yếu.
    • Tích hợp thêm các cơ chế bảo vệ phần cứng chống lại các hình thức tấn công kênh phụ (Side-Channel Attacks) và tấn công phân tích thời gian thực thi (Timing Attacks).

Giá trị tham khảo

Tài liệu khóa luận có giá trị tham khảo chuyên môn đối với:

  • Sinh viên và học viên cao học thuộc các ngành Kỹ thuật Máy tính, Thiết kế Vi mạch, Điện tử - Viễn thông và An toàn Thông tin có nhu cầu nghiên cứu về thiết kế vi xử lý kiến trúc mở, bộ tăng tốc phần cứng và vi kiến trúc RISC-V.
  • Kỹ sư thiết kế FPGA/SoC: Cung cấp tài liệu tham khảo chi tiết về phương pháp thiết kế dùng chung phần cứng giữa các thuật toán mã hóa (đặc biệt là kỹ thuật gộp khối nén băm SHA/SM3 và kỹ thuật gộp Quarter Round giữa ChaCha20 và BLAKE2s).
  • Phần nội dung đáng tham khảo nhất: Quy trình thiết kế chi tiết khối tính toán kết hợp ở Chương 3, phương pháp tùy biến tập lệnh trên chuỗi công cụ RISC-V GNU Toolchain, cùng mô hình kết nối giao tiếp SoC ARM - RISC-V qua chuẩn bus AXI4.

Câu hỏi thường gặp

1. Bộ đồng xử lý RISC-V trong khóa luận đạt tần số hoạt động bao nhiêu trên phần cứng FPGA?
Hệ thống đạt tần số hoạt động 210 MHz trên bo mạch FPGA Xilinx ZCU102 mà không gặp bất kỳ lỗi vi phạm thời gian nào (no timing violations).

2. Khóa luận hiện thực cụ thể bao nhiêu giải thuật mật mã và thuộc những nhóm nào?
Khóa luận hiện thực thành công 8 giải thuật mật mã thuộc hai nhóm chính: nhóm băm mật mã (SHA2-256, SHA2-512, SM3, BLAKE2s) và nhóm mật mã đối xứng khối/luồng (ChaCha20, Salsa20, SM4, AES).

3. Khối tính toán phần cứng cho ChaCha20, Salsa20 và BLAKE2s được tối ưu hóa như thế nào?
Nhóm tác giả đã khai thác sự tương đồng giữa cấu trúc hàm Quarter Round của ChaCha20/Salsa20 và hàm nén G của BLAKE2s để xây dựng một khối tính 2 vòng lặp (2-round block) hợp nhất, cho phép tái sử dụng các phép toán cộng, XOR và dịch bit trên cùng một phần cứng logic.

4. Cơ chế giao tiếp giữa CPU ARM và Co-Processor RISC-V được thực hiện qua giao thức nào?
Hai bộ xử lý giao tiếp thông qua bus AXI4 (gồm 5 kênh truyền dữ liệu và địa chỉ độc lập) kết hợp cùng bộ điều khiển DMA Controller và các lệnh PIO Instructions để nạp lệnh, ghi dữ liệu vào bộ nhớ của RISC-V và trả kết quả về cho ARM.

5. Quy trình thêm chỉ thị tùy biến (custom instruction) cho RISC-V trong đề tài gồm các bước nào?
Quy trình gồm 5 bước: định nghĩa chỉ thị tùy biến (Opcode và trường bit), mô tả chỉ thị trong ngôn ngữ Assembly, xác định nhóm chỉ thị, sửa đổi cấu hình bộ công cụ GNU Toolchain (GCC) và biên dịch kiểm thử chương trình.


Kết luận

Khóa luận tốt nghiệp của Lê Đức Hồng Ân và Hồ Viết Anh đã thiết kế và hiện thực thành công bộ đồng xử lý 64-bit dựa trên kiến trúc RISC-V, vận hành ổn định ở tần số 210 MHz trên nền tảng FPGA Xilinx ZCU102. Công trình đưa ra giải pháp tối ưu hóa phần cứng hiệu quả thông qua việc chia sẻ logic tính toán giữa 8 thuật toán mật mã phổ biến (SHA2-256, SHA2-512, SM3, ChaCha20, BLAKE2s, Salsa20, SM4, AES) và tích hợp hoàn chỉnh vào hệ thống SoC giao tiếp ARM qua bus AXI4. Toàn bộ các mô-đun đều được kiểm chứng độ chính xác chức năng và hiệu năng trên phần cứng thực tế, cung cấp tài liệu tham khảo có giá trị cao cho lĩnh vực thiết kế vi xử lý bảo mật cho IoT.