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

Sự phát triển của mạng Internet và các hệ thống thông tin kéo theo sự gia tăng của các giao dịch điện tử trong nhiều lĩnh vực. Để bảo đảm an toàn cho các giao dịch này, chữ ký số (Digital Signature - DS) được sử dụng nhằm cung cấp ba tính năng cốt lõi: xác thực nguồn gốc thông điệp (authentication), bảo đảm tính toàn vẹn của dữ liệu (integrity) và tính chống chối bỏ (non-repudiation). Về mặt pháp lý, chữ ký số có giá trị tương đương chữ ký tay trong các giao dịch điện tử.

Trong các hệ thống mật mã học, lược đồ chữ ký số kết hợp giữa thuật toán mã hóa khóa công khai RSA (Rivest-Shamir-Adleman) và hàm băm một chiều SHA-256 (Secure Hash Algorithm) được sử dụng rộng rãi. Tuy nhiên, phần lớn các hệ thống hiện nay chủ yếu được hiện thực trên phần mềm, dẫn đến giới hạn về tốc độ xử lý khi phải xử lý các phép toán số học lớn. Nhiều công trình nghiên cứu trước đó chỉ dừng lại ở mức thuật toán hoặc chưa cung cấp thiết kế phần cứng chi tiết, trong khi một số kiến trúc áp dụng cơ chế pipeline tuy tăng được tần số xung nhịp nhưng lại làm tăng số lượng chu kỳ xung clock cần thiết để hoàn thành một phép mã hóa/xác thực.

Nhằm giải quyết bài toán tối ưu hóa tốc độ và hiện thực hóa mô hình xác minh trên phần cứng chuyên dụng, khóa luận đặt ra các mục tiêu và nhiệm vụ nghiên cứu cụ thể:

  1. Nghiên cứu sâu về thuật toán mã hóa RSA dựa trên nghiên cứu tham khảo và cụ thể hóa mô hình kết hợp với hàm băm SHA-256.
  2. Đề xuất kiến trúc phần cứng, thiết kế và tối ưu khối nhân Montgomery để nâng cao tần số hoạt động của bộ tính toán RSA 1024-bit.
  3. Thiết kế hoàn chỉnh khối kiểm tra chữ ký số RSA bằng ngôn ngữ mô tả phần cứng Verilog và SystemVerilog trên công cụ Vivado Design Suite.
  4. Xây dựng phần mềm tạo dữ liệu kiểm thử (test case) tự động bằng ngôn ngữ Python để sinh các trường hợp dữ liệu đúng và sai.
  5. Tích hợp thiết kế vào hệ thống SoC (System-on-Chip) sử dụng vi xử lý nhúng MicroBlaze qua giao thức AXI4-Stream, thực hiện tổng hợp logic, phân tích timing, công suất và nạp thực nghiệm lên kit FPGA Xilinx Virtex-7 VC707 (chip XC7VX485T-2FFG1761C) qua chuẩn giao tiếp UART.

Đối tượng nghiên cứu của đề tài là kiến trúc phần cứng của thuật toán xác minh chữ ký số RSA 1024-bit kết hợp với hàm băm SHA-256. Phạm vi nghiên cứu tập trung vào việc thiết kế RTL, mô phỏng chức năng và thực thi kiểm thử phần cứng trên kit FPGA Xilinx Virtex-7 VC707 trong năm 2022.


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

Khóa luận xây dựng trên nền tảng lý thuyết của các thuật toán mật mã học và phương pháp thiết kế hệ thống số trên vi mạch FPGA:

  • Thuật toán nhân Montgomery (Montgomery Modular Multiplication): Được Peter L. Montgomery đề xuất năm 1985, thuật toán này giải quyết phép tính $A \cdot B \bmod M$ cho các số nguyên lớn bằng cách chuyển đổi toán hạng sang dạng biểu diễn Montgomery ($A' = A \cdot r \bmod M$, $B' = B \cdot r \bmod M$ với $r = 2^n > M$ và $\gcd(M, r) = 1$). Kỹ thuật này thay thế phép chia lấy dư phức tạp bằng các phép dịch bit và phép cộng số học, giúp tối ưu hóa việc triển khai trên phần cứng.
  • Thuật toán lũy thừa modulo (Modular Exponentiation): Được sử dụng để thực hiện phép tính $C = M^E \bmod N$ trong RSA với các số nguyên 1024-bit. Khóa luận áp dụng phương pháp nhị phân (Binary Method), quét các bit của số mũ $E$ từ bit trọng số thấp nhất (LSB) đến bit trọng số cao nhất (MSB). Tại mỗi bước quét, hệ thống thực hiện đồng thời hai phép toán: bình phương modulo (Montgomery Square) và nhân modulo (Montgomery Multiply).
  • Thuật toán mã hóa bất đối xứng RSA: Phát triển bởi Ron Rivest, Adi Shamir và Len Adleman (1977). Quá trình tạo khóa dựa trên hai số nguyên tố lớn ngẫu nhiên $p, q$, tính giá trị hàm Euler $\Phi(n) = (p-1)(q-1)$, chọn số mũ công khai $e$ nguyên tố cùng nhau với $\Phi(n)$ và tính khóa bí mật $d$ sao cho $d \cdot e \equiv 1 \pmod{\Phi(n)}$. Quá trình xác minh sử dụng khóa công khai $(e, N)$ để giải mã chữ ký $C$ thành bản tóm lược thông điệp theo công thức $M = C^e \bmod N$.
  • Thuật toán hàm băm SHA-256: Thuộc họ hàm băm FIPS PUB 180-4, chuyển đổi thông điệp có độ dài bất kỳ thành giá trị băm cố định 256-bit. Quá trình xử lý bao gồm việc đệm dữ liệu (padding) để độ dài thông điệp là bội số của 512-bit, chia thành các khối 16 từ 32-bit và mở rộng thành 64 từ ($W_t$). Thuật toán sử dụng 6 hàm logic ($Ch, Maj, \Sigma_0, \Sigma_1, \sigma_0, \sigma_1$), 64 hằng số $K_t$ (tương ứng với 32-bit đầu phần thập phân căn bậc ba của 64 số nguyên tố đầu tiên) và 8 giá trị khởi tạo băm $H_0 \dots H_7$ (32-bit đầu phần thập phân căn bậc hai của 8 số nguyên tố đầu tiên).
  • Lược đồ xác minh chữ ký số (RSA Digital Signature Verification - DSV): Phía nhận thực hiện đồng thời hai luồng tính toán: băm thông điệp nhận được bằng SHA-256 để tạo Digest_SHA và giải mã chữ ký nhận được bằng khóa công khai RSA để tạo Digest_RSA. Sau đó, bộ so sánh logic đối sánh hai giá trị băm này để đưa ra kết luận về tính hợp lệ của chữ ký.

Phương pháp nghiên cứu thực tế gồm thiết kế mạch tích hợp chuyên dụng RTL (Register-Transfer Level) bằng Verilog/SystemVerilog, mô phỏng chức năng logic trên Vivado Simulator, tổng hợp logic (Synthesis) và định vị - định tuyến (Implementation) trên FPGA. Dữ liệu kiểm thử được sinh tự động bằng tập lệnh Python sử dụng thư viện PyCryptodome và RSA, tạo ra các tệp dữ liệu nhị phân/văn bản: BLOCK_MESSAGE.txt, Num_Turn.txt, PublicKey.txt, Signature.txt và Digest.txt.


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

Hệ thống kiểm tra chữ ký số RSA được thiết kế dạng phần cứng chuyên dụng trên FPGA, bao gồm các khối chức năng chính:

Module Chức năng chính Độ rộng cổng tín hiệu I/O Chu kỳ hoàn thành (Latency)
Montgomery Cell (MC) Thực hiện phép nhân, dịch và cộng trên từng bit dữ liệu 1024-bit logic 1 chu kỳ / bit
Montgomery Multiplier Tích hợp 1 khối MC xử lý tuần hoàn 1024 vòng lặp Input: A, B, M (1024-bit); Output: S (1024-bit) 1026 chu kỳ (bao gồm 2 chu kỳ nạp/chốt dữ liệu)
Khối RSA (Modular Exponentiation) Thực hiện phép tính $C = M^E \bmod N$ bằng Binary Method CLK, RST, M (64-bit), E (64-bit), N (64-bit), Valid_out, C (64-bit) 1,071,146 chu kỳ
Khối SHA-256 Băm khối dữ liệu thông điệp đầu vào theo từng block 512-bit CLK, RST, D_in (32-bit), Num_block (22-bit), D_out (256-bit), Valid_out $67 \times \text{Num_block} + 1$ chu kỳ
Khối DSA Verification Điều khiển song song RSA và SHA-256, so sánh kết quả CLK, RST, M, E, N, D_in, Num_block, isCorrect (1-bit), Valid_out Phụ thuộc khối thực thi lâu hơn (RSA: 1,071,146 chu kỳ)
  • Kiến trúc khối nhân Montgomery: Nhóm tác giả đề xuất việc sử dụng 1 khối Montgomery Cell (MC) duy nhất kết hợp thanh ghi phản hồi và bộ đếm vòng lặp Counter thay vì ghép chuỗi 1024 khối MC nối tiếp. Giải pháp này giúp loại bỏ độ trễ do lan truyền tín hiệu (ripple delay), tiết kiệm đáng kể diện tích tài nguyên logic trên chip và cho phép mạch hoạt động ở tần số xung nhịp cao hơn.
  • Kiến trúc khối RSA: Gồm hai bộ nhân Montgomery hoạt động song song (một bộ thực hiện phép bình phương Mont Square, một bộ thực hiện phép nhân Mont Multiply), một bộ tính toán modulo $r^2 \bmod N$, và một FSM (Finite State Machine) điều khiển các multiplexer mux_2, mux_4. Quy trình xử lý gồm: State 0 (tính $r^2 = 2^{2048} \bmod N$ mất $2052 \times 9$ chu kỳ); State 1 (khởi tạo $C_0$ và $S_0$ qua Montgomery); State 2 (1024 lần lặp quét bit số mũ $E$); State 3 (tính toán kết quả cuối cùng). Tổng thời gian tính toán của khối là: $$\text{Latency}_{\text{RSA}} = 1 + (2052 \times 9) + (1026 \times 1026) + 1 = 1,071,146 \text{ chu kỳ}$$
  • Kiến trúc khối SHA-256: Gồm các module con K_machine (truy xuất 64 hằng số), W_machine (sinh từ thông điệp $W_i$), SHA_Round và SHA_Block. Quá trình băm mỗi block 512-bit mất 64 chu kỳ tính toán vòng cộng với 2 chu kỳ nạp/chốt dữ liệu. Tổng thời gian băm cho $N$ block là $67 \times N + 1$ chu kỳ.
  • Thiết kế hệ thống SoC nhúng: Để kiểm thử trên phần cứng thực tế, khối DSA Verification được đóng gói thành một IP Core tích hợp vào hệ thống SoC dựa trên bộ vi xử lý MicroBlaze của Xilinx. Giao thức AXI4-Stream được cấu hình để truyền nhận luồng dữ liệu kiểm thử giữa bộ nhớ của vi xử lý và khối phần cứng DSA. Bộ chuyển đổi UART giúp kết nối hệ thống FPGA với máy tính chủ để gửi tập test case và nhận cờ trạng thái xác thực.

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

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

Chương 1 trình bày lý do chọn đề tài xuất phát từ nhu cầu bảo mật, toàn vẹn và xác thực trong các giao dịch điện tử. Tác giả khảo sát các công trình nghiên cứu liên quan gồm: các nghiên cứu thuật toán chưa hiện thực phần cứng [5], [8]; công trình cải tiến thuật toán Montgomery [1]; thiết kế phần cứng của nhóm nghiên cứu [3] (chưa công bố đầy đủ thông số so sánh) và nghiên cứu [9] (sử dụng kiến trúc pipeline giúp tăng xung nhịp nhưng tăng số chu kỳ xử lý). Từ đó, nhóm xác định mục tiêu thiết kế bộ kiểm tra chữ ký số RSA 1024-bit trên kit FPGA Virtex-7 VC707 với tần số mục tiêu đạt từ 20 đến 50 MHz và tổng số chu kỳ xử lý ước tính khoảng 1,100,000 chu kỳ.

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

Chương 2 mô tả hệ thống công cụ phát triển gồm Vivado Design Suite 2021 (hỗ trợ tổng hợp logic, tối ưu hóa dựa trên ML, Abstract Shell) và Vitis Unified Software Platform. Tác giả trình bày cấu trúc phần mềm tạo test case bằng Python (sử dụng thư viện PyCryptodome) với giao diện cho phép nhập từ bàn phím hoặc tệp văn bản để xuất ra 5 tệp tham số kiểm thử. Phần lý thuyết toán học phân tích chi tiết giải thuật nhân Montgomery, phương pháp dịch bit nhị phân trong lũy thừa modulo, cấu trúc thuật toán khóa công khai RSA, các phép biến đổi hàm logic/hằng số của chuẩn hàm băm SHA-256 và sơ đồ khối nguyên lý xác minh chữ ký số RSA.

Chương 3: Thiết kế hệ thống đề xuất

Chương 3 đặc tả chi tiết kiến trúc vi mô của từng khối phần cứng. Tác giả phân tích thiết kế Montgomery Module 1024 clock sử dụng 1 khối MC nhằm tối ưu hóa diện tích và xung nhịp; xây dựng sơ đồ khối và bảng tín hiệu giao tiếp (Interface) của khối RSA (Modular Exponentiation); mô tả cấu trúc phân tầng của khối SHA-256 từ mức hàm vòng logic (SHA_Round), mức khối dữ liệu (SHA_Block) đến mức điều khiển thông điệp toàn cục (SHA_256). Cuối cùng, chương này trình bày sơ đồ ghép nối song song hai khối RSA và SHA-256 cùng bộ so sánh Compare để tạo thành khối xác minh chữ ký số hoàn chỉnh.

Chương 4: Hiện thực thiết kế và nạp ứng dụng của thiết kế vào board FPGA

Chương 4 trình bày phương pháp đánh giá thông qua tập dữ liệu thử nghiệm từ 1 đến 100 block thông điệp (512 bit/block) cho cả hai trường hợp chữ ký đúng (True) và chữ ký sai (False). Tác giả cung cấp kết quả tổng hợp tài nguyên phần cứng, phân tích timing và công suất tiêu thụ trên Vivado. Chương này cũng phân tích kết quả mô phỏng dạng sóng cho từng giai đoạn (load dữ liệu, tính toán modulo $r^2$, vòng lặp nhân/bình phương, xuất kết quả); mô tả cấu trúc Block Design của hệ thống SoC MicroBlaze kết nối qua AXI4-Stream và trình bày kết quả thực nghiệm truyền nhận test case trên kit phần cứng Virtex-7 VC707 thông qua cổng UART.

Chương 5: Kết luận và hướng phát triển đề tài

Chương 5 tổng kết toàn bộ các kết quả đạt được về mặt thiết kế, mô phỏng và hiện thực phần cứng. Tác giả nêu rõ những khó khăn gặp phải trong quá trình thiết kế liên quan đến việc xử lý vi phạm thời gian (timing closure) trên đường truyền dữ liệu lớn 1024-bit và cân bằng tài nguyên phần cứng. Đồng thời, chương đề xuất các định hướng mở rộng nghiên cứu trong tương lai nhằm nâng cao hiệu năng hệ thống.


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

Kết quả tổng hợp và thực nghiệm phần cứng

Quá trình tổng hợp logic (Synthesis) và thực thi (Implementation) khối tính toán RSA 1024-bit trên chip FPGA Xilinx Virtex-7 (XC7VX485T-2FFG1761C) ghi nhận mức sử dụng tài nguyên phần cứng như sau:

Loại tài nguyên Số lượng sử dụng Tổng tài nguyên khả dụng Tỷ lệ sử dụng (%)
LUT (Lookup Table) 28,992 303,600 9.55%
Flip-Flop (FF) 21,744 607,200 3.58%

Về mặt hiệu năng hoạt động:

  • Tần số xung nhịp: Đạt 43.478 MHz khi chạy mô phỏng (Simulation) và đạt tần số vận hành ổn định 30 MHz khi nạp thực nghiệm trên phần cứng board FPGA Virtex-7 VC707.
  • Thời gian thực thi (Latency): Khối RSA hoàn thành một phép xác minh 1024-bit trong 1,071,146 chu kỳ xung clock; khối SHA-256 hoàn thành băm thông điệp với độ trễ $67 \times \text{num_block} + 1$ chu kỳ.
  • Độ chính xác: Kiểm thử thành công 100% các bộ test case với kích thước thông điệp từ 1 đến 100 block:
    • Trường hợp dữ liệu hợp lệ (True): Hệ thống trả về cờ isCorrect = 1.
    • Trường hợp dữ liệu bị giả mạo/chữ ký sai (False): Hệ thống trả về cờ isCorrect = 0.

Đóng góp của đề tài

  1. Đề xuất và hiện thực thành công kiến trúc phần cứng chuyên dụng xác minh chữ ký số RSA 1024-bit kết hợp hàm băm SHA-256 trên FPGA, chuyển đổi các thuật toán mật mã lý thuyết thành thiết kế vi mạch cụ thể.
  2. Tối ưu hóa kiến trúc bộ nhân Montgomery bằng kỹ thuật tái sử dụng tài nguyên (1 Montgomery Cell lặp 1024 chu kỳ), giúp tiết kiệm diện tích logic (chỉ chiếm dưới 10% LUT của chip Virtex-7) và duy trì tần số xung nhịp ở mức cao (43.478 MHz mô phỏng).
  3. Hiện thực hoàn chỉnh hệ thống SoC nhúng trên FPGA với vi xử lý MicroBlaze, kết nối khối phần cứng tùy biến qua giao thức bus AXI4-Stream và kiểm thử tự động với phần mềm sinh dữ liệu viết bằng Python qua giao tiếp UART.

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

  • Hạn chế được nêu trong văn bản:
    • Kiến trúc phần cứng hiện tại được cấu hình cố định cho độ dài khóa RSA 1024-bit, chưa hỗ trợ cấu hình động cho các độ dài khóa lớn hơn.
    • Tần số hoạt động thực tế trên phần cứng (30 MHz) thấp hơn tần số mô phỏng lý thuyết (43.478 MHz) do các yếu tố về suy hao đường truyền, giới hạn giao tiếp UART và ràng buộc timing trong hệ thống SoC.
  • Hướng nghiên cứu tiếp theo:
    • Nghiên cứu nâng cấp kiến trúc để hỗ trợ các kích thước khóa RSA lớn hơn như 2048-bit hoặc 4096-bit nhằm tăng cường độ an toàn mật mã.
    • Áp dụng các kỹ thuật pipeline nâng cao trong khối nhân Montgomery để tiếp tục cải thiện tần số hoạt động của mạch.
    • Tối ưu hóa băng thông truyền dữ liệu giữa máy tính chủ và board FPGA bằng các chuẩn giao tiếp tốc độ cao hơn (như PCIe hoặc Ethernet) thay cho chuẩn UART.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo kỹ thuật hữu ích cho:

  • Sinh viên và kỹ sư ngành Kỹ thuật Máy tính, Thiết kế Vi mạch, Điện tử: Tham khảo phương pháp mô tả phần cứng RTL bằng Verilog/SystemVerilog cho các giải thuật số học số nguyên lớn (Montgomery Modular Multiplication, Modular Exponentiation).
  • Người nghiên cứu mật mã phần cứng (Hardware Cryptography): Cung cấp mô hình kết nối song song giữa thuật toán mã hóa công khai (RSA) và hàm băm an toàn (SHA-256) cùng cơ chế xử lý độ trễ đồng bộ.
  • Người phát triển hệ thống nhúng trên FPGA: Cung cấp giải pháp đóng gói IP tùy biến, tích hợp vi xử lý MicroBlaze và xây dựng kênh truyền dữ liệu AXI4-Stream trên môi trường Vivado/Vitis.

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

1. Khóa luận sử dụng giải pháp kiến trúc nào cho bộ nhân Montgomery để tối ưu tài nguyên và tần số?
Thay vì ghép nối 1024 khối Montgomery Cell (MC) nối tiếp gây ra độ trễ lan truyền lớn (ripple delay), thiết kế chỉ sử dụng duy nhất 1 khối MC kết hợp thanh ghi phản hồi và bộ đếm tuần hoàn. Cấu trúc này thực hiện phép tính trong 1024 chu kỳ xung nhịp, giúp giảm đáng kể tài nguyên LUT/FF và tăng tần số hoạt động của mạch.

2. Tổng số chu kỳ xung clock cần thiết để khối RSA 1024-bit hoàn thành một phép tính là bao nhiêu?
Khối RSA cần tổng cộng 1,071,146 chu kỳ xung clock, bao gồm: 1 chu kỳ nạp dữ liệu đầu vào, $2052 \times 9$ chu kỳ tính toán giá trị modulo $r^2 \bmod N$, $1026 \times 1026 = 1,052,676$ chu kỳ cho 1026 lần lặp nhân/bình phương Montgomery song song, và 1 chu kỳ chốt xuất kết quả.

3. Tần số hoạt động của khối thiết kế đạt được là bao nhiêu?
Thiết kế đạt tần số hoạt động tối đa 43.478 MHz trong môi trường mô phỏng (Simulation) trên Vivado và đạt tốc độ xử lý thực tế 30 MHz khi nạp thực nghiệm lên kit FPGA Xilinx Virtex-7 VC707.

4. Khối RSA 1024-bit chiếm dụng bao nhiêu tài nguyên phần cứng trên chip FPGA Virtex-7?
Trên chip Xilinx Virtex-7 (XC7VX485T-2FFG1761C), khối RSA sử dụng 28,992 LUT (chiếm 9.55% tổng số 303,600 LUT khả dụng) và 21,744 Flip-Flop (chiếm 3.58% tổng số 607,200 FF khả dụng).

5. Hệ thống SoC nhúng sử dụng giao thức nào để truyền dữ liệu giữa bộ vi xử lý MicroBlaze và khối kiểm tra chữ ký số?
Hệ thống sử dụng giao thức bus luồng AXI4-Stream để truyền dữ liệu kiểm thử từ bộ nhớ vi xử lý MicroBlaze vào khối IP kiểm tra chữ ký số (DSA Verification) và nhận kết quả phản hồi.


Kết luận

Khóa luận tốt nghiệp của sinh viên Lê Nguyễn Công Toại và Nguyễn Hoàn Tâm đã thiết kế và hiện thực thành công kiến trúc phần cứng kiểm tra chữ ký số RSA 1024-bit kết hợp hàm băm SHA-256 trên nền tảng FPGA Xilinx Virtex-7 VC707. Bằng việc tối ưu hóa bộ nhân Montgomery và tích hợp kiến trúc xử lý song song, thiết kế đạt tần số mô phỏng 43.478 MHz, tần số nạp board 30 MHz với mức chiếm dụng tài nguyên logic dưới 10% LUT. Hệ thống đã được kiểm thử toàn diện thông qua vi xử lý MicroBlaze và phần mềm phát sinh test case tự động bằng Python, bảo đảm độ chính xác trong việc xác minh tính toàn vẹn và nguồn gốc của dữ liệu số.