Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và bùng nổ giao dịch điện tử toàn cầu, bảo mật thông tin và xác thực nguồn gốc dữ liệu trở thành yêu cầu sống còn. Theo các báo cáo an ninh mạng quốc tế, hơn 80% các cuộc tấn công dữ liệu xuất phát từ việc giả mạo danh tính và can thiệp trái phép vào các gói tin truyền tải. Để đảm bảo tính toàn vẹn (Integrity), tính xác thực (Authentication) và tính chống chối bỏ (Non-repudiation), giải pháp chữ ký số (Digital Signature) đã trở thành tiêu chuẩn cốt lõi trong hạ tầng khóa công khai (Public Key Infrastructure - PKI).

Tuy nhiên, các hệ thống xác thực chữ ký số truyền thống triển khai hoàn toàn trên phần mềm (Software-based) đang đối mặt với những nút thắt cổ chai nghiêm trọng:

  • Tải tính toán cực lớn: Thuật toán mã hóa bất đối xứng RSA (Rivest–Shamir–Adleman) với kích thước khóa lớn (1024-bit hoặc 2048-bit) đòi hỏi hàng triệu phép nhân mô-đun số nguyên lớn, gây quá tải bộ vi xử lý trung tâm (CPU).
  • Độ trễ cao trong xử lý thời gian thực: Các máy chủ tài chính, cổng thanh toán hoặc nút mạng IoT công nghiệp chịu tải hàng nghìn giao dịch mỗi giây không thể đáp ứng thời gian thực nếu chỉ dựa vào vi xử lý đa mục đích.
  • Nguy cơ tấn công kênh kề (Side-channel attacks): Việc thực thi mã hóa trên phần mềm dễ bị rò rỉ khóa thông qua phân tích thời gian thực thi (Timing attacks) và điện năng tiêu thụ.

Để giải quyết triệt để các hạn chế trên, đồ án nghiên cứu và phát triển giải pháp "Thiết kế và hiện thực thuật toán kiểm tra chữ kí số RSA trên FPGA" (Design and Implementation of RSA Digital Signature Verification Algorithm on FPGA). Đề tài hướng đến việc tăng tốc phần cứng chuyên dụng (Hardware Accelerator) trên chip FPGA Xilinx Virtex-7, kết hợp song song hai giải thuật then chốt: giải thuật hàm băm an toàn SHA-256 (Secure Hash Algorithm) và giải thuật lũy thừa mô-đun RSA-1024 sử dụng thuật toán nhân Montgomery.

Mục tiêu kỹ thuật cụ thể của dự án:

  1. Hiện thực bộ nhân Montgomery 1024-bit tối ưu tài nguyên: Thiết kế kiến trúc Montgomery Cell lặp đơn khối (Iterative Architecture) giúp triệt tiêu trễ truyền sóng (Ripple Delay), tối ưu hóa diện tích logic trên chip.
  2. Thiết kế phần cứng tính lũy thừa mô-đun RSA-1024: Áp dụng phương pháp nhị phân quét từ LSB sang MSB (Binary Method), thực thi song song phép bình phương và nhân mô-đun Montgomery.
  3. Hiện thực khối xử lý băm SHA-256 hoàn chỉnh: Xử lý đệm dữ liệu (Padding) và tính toán nén 64 vòng lặp cho mỗi khối tin nhắn 512-bit theo chuẩn FIPS PUB 180-4.
  4. Tích hợp hệ thống SoC (System-on-Chip) trên FPGA: Đóng gói IP Core kiểm tra chữ ký số (DSA Verification IP), giao tiếp qua chuẩn AXI4-Stream với vi xử lý nhúng MicroBlaze trên board Xilinx Virtex-7 VC707 Evaluation Kit.
  5. Đánh giá thực nghiệm toàn diện: Đạt tần số hoạt động mô phỏng 43.478 MHz và tần số thực thi thực tế 30 MHz trên phần cứng, đảm bảo độ chính xác xác thực 100% trên tập dữ liệu kiểm thử từ 1 đến 100 khối dữ liệu.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trong lĩnh vực bảo mật phần cứng, các phương pháp tăng tốc xử lý chữ ký số được phân chia theo ba mô hình chính: phần mềm thuần túy, vi mạch chuyên dụng ASIC và vi mạch logic lập trình được FPGA.

Tiêu chí so sánh Phần mềm thuần túy (x86/ARM CPU) ASIC chuyên dụng (Dedicated Chip) Giải pháp FPGA đề xuất (Virtex-7)
Tốc độ xử lý Trung bình (Bị phụ thuộc OS & scheduler) Cực cao (Tối ưu hóa mức bán dẫn) Rất cao (Xử lý pipeline và song song mức bit)
Độ trễ (Latency) Biến thiên, không tiền định Cố định, cực thấp Cố định, xác định chính xác theo chu kỳ xung clock
Chi phí phát triển Thấp (Chỉ phát triển phần mềm) Cực kỳ cao (Chi phí mặt nạ NRE hàng triệu USD) Trung bình (Lập trình cấu hình lại được)
Tính linh hoạt Rất cao (Dễ dàng cập nhật thuật toán) Bằng 0 (Cố định sau khi sản xuất) Rất cao (Nâng cấp firmware qua bitstream)
Bảo mật kênh kề Dễ bị tấn công Timing/Power Kháng tốt nếu có lớp che chắn (Shielding) Kháng cao do tính toán đồng bộ theo chu kỳ clock

So sánh với các nghiên cứu phần cứng liên quan:

  • Nghiên cứu của tác giả Nguyễn và cộng sự [1]: Triển khai bộ nhân Montgomery trên FPGA nhưng sử dụng chuỗi tế bào liên tiếp (Systolic Array) gây trễ tích lũy ripple delay, hạn chế tần số xung nhịp tối đa.
  • Nghiên cứu của nhóm tác giả [9]: Áp dụng cơ chế đường ống (Pipeline) sâu các phép tính số học cơ bản. Cách tiếp cận này giúp tăng tần số Fmax nhưng làm bùng nổ số lượng thanh ghi (Flip-Flops) và tài nguyên bảng tra LUT, đồng thời tăng tổng chu kỳ trễ để hoàn thành một phiên mã hóa.
  • Giải pháp của đề tài: Cân bằng tối ưu giữa diện tích phần cứng (Area) và tốc độ (Speed) bằng cách triển khai kiến trúc 1 khối Montgomery Cell 1024-clock tuần tự, tích hợp cơ chế tính trước hằng số $r^2 \pmod N$ và ghép song song trực tiếp với lõi SHA-256.
Mô hình yêu cầu hệ thống theo kỹ thuật MoSCoW:

Thiết kế hệ thống

Hệ thống kiểm tra chữ ký số hoàn chỉnh bao gồm ba tầng kiến trúc chính: Tầng ứng dụng (Python Testbench), Tầng điều khiển SoC (MicroBlaze Subsystem) và Tầng xử lý phần cứng chuyên dụng (DSA Accelerator IP Core).

Sơ đồ khối phân rã chức năng phần cứng (DSA Verification RTL Core):

+-----------------------------------------------------------------------------------+
|                        TOP_DSA_VERIFICATION_MODULE                                |
|                                                                                   |
|  Inputs: CLK, RST, M[63:0], E[63:0], N[63:0], D_in[31:0], Num_block[21:0]          |
|  Outputs: Valid_out, isCorrect                                                    |
+-----------------------------------------------------------------------------------+
       |                                                         |
       | (Chữ ký C, Khóa E, Modulo N)                            | (Dữ liệu bản tin D_in)
       v                                                         v
+------------------------------------+    +-----------------------------------------+
|      RSA MODULAR EXPONENTIATION    |    |            SHA-256 CORE                 |
|                                    |    |                                         |
|  +------------------------------+  |    |  +-----------------------------------+  |
|  | Modulo Core: r^2 mod N       |  |    |  | W_Machine: Sinh 64 từ Wt          |  |
|  +------------------------------+  |    |  +-----------------------------------+  |
|  +------------------------------+  |    |  +-----------------------------------+  |
|  | Montgomery Square Unit       |  |    |  | K_Machine: 64 Hằng số Kt          |  |
|  +------------------------------+  |    |  +-----------------------------------+  |
|  +------------------------------+  |    |  +-----------------------------------+  |
|  | Montgomery Multiply Unit     |  |    |  | Round Logic (Ch, Maj, Sigma, Sum) |  |
|  +------------------------------+  |    |  +-----------------------------------+  |
|  Cycles: 1,071,146 chu kỳ          |    |  Cycles: 67 * Num_block + 1 chu kỳ      |
+------------------------------------+    +-----------------------------------------+
       |                                                         |
       | Digest_RSA [255:0]                                      | Digest_SHA [255:0]
       +----------------------------+  +-------------------------+
                                    |  |
                                    v  v
                   +------------------------------------+
                   |          COMPARE UNIT              |
                   |                                    |
                   |   isCorrect = (Digest_RSA ==       |
                   |                Digest_SHA)         |
                   +------------------------------------+
                                    |
                                    v
                            isCorrect, Valid_out

Bảng thông số giao tiếp giao diện RTL (Interface Specifications):

  1. Giao diện Khối Modular Exponentiation (RSA Core):

    • CLK (Input, 1-bit): Xung clock đồng bộ hệ thống.
    • RST (Input, 1-bit): Tín hiệu reset tích cực mức cao (Active-High).
    • M (Input, 64-bit): Dữ liệu chữ ký số đầu vào (nhận từng phần 64-bit ghép thành 1024-bit).
    • E (Input, 64-bit): Số mũ công khai (Public Exponent $e$).
    • N (Input, 64-bit): Mô-đun công khai 1024-bit (Public Modulus $n$).
    • Valid_out (Output, 1-bit): Tín hiệu báo kết quả giải mã RSA hợp lệ.
    • C (Output, 64-bit): Dữ liệu đầu ra sau giải mã (Message Digest 256-bit).
  2. Giao diện Khối SHA-256:

    • D_in (Input, 32-bit): Giá trị từng phần 32-bit của khối tin nhắn 512-bit.
    • Num_block (Input, 22-bit): Tổng số lượng khối tin nhắn cần băm.
    • Valid_in (Output, 1-bit): Báo sẵn sàng nhận khối dữ liệu tiếp theo.
    • D_out (Output, 256-bit): Kết quả băm 256-bit cuối cùng.
    • Valid_out (Output, 1-bit): Báo hoàn tất toàn bộ quá trình băm.
  3. Công nghệ và Môi trường phát triển:

    • Phần cứng mục tiêu: Xilinx Virtex-7 FPGA VC707 Evaluation Kit (Thiết bị: XC7VX485T-2FFG1761C).
    • Công cụ tổng hợp và biên dịch: Xilinx Vivado Design Suite phiên bản 2021.1 / 2021.2.
    • Nền tảng phần mềm nhúng: Xilinx Vitis Unified Software Platform 2021.
    • Ngôn ngữ mô tả phần cứng: Verilog-2001 và SystemVerilog.
    • Môi trường sinh dữ liệu kiểm thử: Python 3.8+ sử dụng các thư viện PyCryptodomersa.

Methodology

Quy trình nghiên cứu và phát triển hệ thống được tổ chức theo mô hình V-Model chuẩn công nghiệp dành cho thiết kế vi mạch FPGA:

Tiến trình thiết kế phần cứng:
  • Giai đoạn 1 (Nghiên cứu & Mô hình hóa): Phân tích toán học thuật toán nhân Montgomery $S = A \cdot B \cdot r^{-1} \pmod M$, thuật toán lũy thừa nhị phân Binary Method và cấu trúc hàm băm SHA-256.
  • Giai đoạn 2 (Thiết kế RTL & Tối ưu hóa): Xây dựng các module Verilog độc lập. Tối ưu đường trễ quan trọng (Critical Path) trong khối Montgomery Cell nhằm loại bỏ hiện tượng tràn số và trễ lan truyền.
  • Giai đoạn 3 (Xác minh & Tích hợp SoC): Sử dụng Vivado Simulator để kiểm tra chức năng logic với các vector kiểm thử mẫu. Thiết kế vi xử lý MicroBlaze, kết nối với bộ tăng tốc qua bus AXI4-Stream nhằm chuyển đổi dữ liệu tốc độ cao.
  • Giai đoạn 4 (Triển khai & Đo đạc phần cứng): Nạp Bitstream lên FPGA Virtex-7 VC707, kết nối UART với máy tính chủ để gửi hàng trăm kịch bản kiểm thử tự động, đo đạc điện năng tiêu thụ (Power Analysis) và thời gian thực thi (Timing Closure).

Implementation và kết quả

Development process

1. Thuật toán và Hiện thực Khối nhân Montgomery (Montgomery Modular Multiplication)

Phép nhân mô-đun chuẩn đòi hỏi phép chia lấy dư tốn kém nhiều tài nguyên phần cứng. Phép nhân Montgomery chuyển đổi toán hạng sang miền Montgomery ($A' = A \cdot r \pmod M$, $B' = B \cdot r \pmod M$ với $r = 2^{1024}$) để thay thế toàn bộ phép chia bằng các phép dịch bit (Shift right) và phép cộng logic.

Thuật toán Montgomery Modular Multiplication (1024-bit):
Input: A, B, M (với M là số nguyên dương lẻ 1024-bit, A, B < M)
Output: S = Mont(A, B, M) = A * B * r^(-1) mod M
------------------------------------------------------------
1: S = 0
2: For i = 0 to 1023 do:
3:     if (S + A[i] * B) is odd then:
4:         S = (S + A[i] * B + M) / 2
5:     else:
6:         S = (S + A[i] * B) / 2
7:     end if
8: end for
9: if S >= M then:
10:    S = S - M
11: end if
12: Return S

Trích đoạn mã Verilog mô tả phần cứng xử lý lặp một chu kỳ cho Montgomery Cell (MC):

// Montgomery Cell RTL implementation snippet
module montgomery_cell_1024 (
    input  wire        clk,
    input  wire        rst,
    input  wire        start,
    input  wire [1023:0] A,
    input  wire [1023:0] B,
    input  wire [1023:0] M,
    output reg  [1023:0] S_out,
    output reg         done
);
    reg [10:0]  counter;
    reg [1024:0] S_reg; // 1025-bit to prevent overflow during addition
    wire [1024:0] add_b;
    wire [1024:0] add_m;

    assign add_b = S_reg + (A[counter] ? B : 1024'd0);
    assign add_m = add_b + (add_b[0] ? M : 1024'd0);

    always @(posedge clk or posedge rst) begin
        if (rst) begin
            counter <= 11'd0;
            S_reg   <= 1025'd0;
            done    <= 1'b0;
            S_out   <= 1024'd0;
        end else if (start) begin
            if (counter < 11'd1024) begin
                S_reg   <= add_m >> 1; // Division by 2 via right shift
                counter <= counter + 1'b1;
                done    <= 1'b0;
            end else begin
                done <= 1'b1;
                if (S_reg >= M)
                    S_out <= S_reg - M;
                else
                    S_out <= S_reg[1023:0];
            end
        end
    end
endmodule

2. Khối Lũy thừa Mô-đun RSA (Modular Exponentiation Engine)

Thuật toán tính $C = M^E \pmod N$ được thực thi bằng phương pháp quét bit Binary Method từ LSB đến MSB. Để loại bỏ giá trị $r^{-1}$ thừa trong kết quả cuối, hệ thống thực hiện các bước:

  1. Khởi tạo: Tính toán trước hằng số $r^2 \pmod N$. Sau đó tính $C_0 = \text{Mont}(1, r^2, N) = r \pmod N$ và $S_0 = \text{Mont}(M, r^2, N) = M \cdot r \pmod N$.
  2. Vòng lặp quét bit (1024 bước lặp):
    • $S_{i+1} = \text{Mont}(S_i, S_i, N)$ (Bình phương mô-đun).
    • Nếu $E[i] == 1$: $C_{i+1} = \text{Mont}(C_i, S_i, N)$ (Nhân mô-đun).
    • Nếu $E[i] == 0$: $C_{i+1} = C_i$.
  3. Chuyển đổi kết quả cuối: $C_{\text{final}} = \text{Mont}(C_{1024}, 1, N) = M^E \pmod N$.

Tổng chu kỳ xung nhịp thực thi của khối RSA: $$\text{Cycles}_{\text{RSA}} = 1,(\text{Load}) + (2052 \times 9),(\text{Tính } r^2 \pmod N) + (1026 \times 1026),(\text{Exponent Loop}) + 1,(\text{Output}) = 1,071,146\text{ chu kỳ}$$

3. Khối Hàm Băm SHA-256

Khối băm bao gồm các bộ sinh từ $W_t$ (W_machine), bộ hằng số $K_t$ (K_machine), và 6 hàm logic phi tuyến:

  • $\text{Ch}(x, y, z) = (x \wedge y) \oplus (\neg x \wedge z)$
  • $\text{Maj}(x, y, z) = (x \wedge y) \oplus (x \wedge z) \oplus (y \wedge z)$
  • $\Sigma_0(x) = \text{ROTR}^2(x) \oplus \text{ROTR}^{13}(x) \oplus \text{ROTR}^{22}(x)$
  • $\Sigma_1(x) = \text{ROTR}^6(x) \oplus \text{ROTR}^{11}(x) \oplus \text{ROTR}^{25}(x)$
  • $\sigma_0(x) = \text{ROTR}^7(x) \oplus \text{ROTR}^{18}(x) \oplus \text{SHR}^3(x)$
  • $\sigma_1(x) = \text{ROTR}^{17}(x) \oplus \text{ROTR}^{19}(x) \oplus \text{SHR}^{10}(x)$

Tổng chu kỳ xung nhịp thực thi của khối SHA-256: $$\text{Cycles}_{\text{SHA}} = (1 + 66) \times \text{Num_block} + 1 = 67 \times \text{Num_block} + 1\text{ chu kỳ}$$

Vì $\text{Cycles}{\text{RSA}} \gg \text{Cycles}{\text{SHA}}$ (ví dụ với 100 khối tin nhắn, SHA-256 chỉ mất $6,701$ chu kỳ trong khi RSA mất $1,071,146$ chu kỳ), kiến trúc song song giúp ẩn hoàn toàn thời gian tính toán của khối băm vào thời gian thực thi của khối RSA.

Testing và validation

Hệ thống được kiểm thử tự động thông qua bộ phần mềm Python Testbench Generator kết hợp nạp phần cứng thực tế qua giao thức truyền thông nối tiếp UART tốc độ cao.

Kịch bản ma trận kiểm thử (Test Matrix Verification):
- Số lượng khối tin nhắn (512-bit/block): 1, 10, 20, 30, 50, 70, 90, 100 blocks.
- Dữ liệu thử nghiệm:
  + Test cases đúng (True Cases): Bản tin gốc nguyên vẹn + Chữ ký số RSA hợp lệ.
  + Test cases sai (False Cases):
    * Trường hợp 1: Sửa đổi 1-bit bất kỳ trong bản tin Message (Băm SHA-256 thay đổi).
    * Trường hợp 2: Sửa đổi 1-bit trong Chữ ký số Signature (Giải mã RSA thay đổi).
    * Trường hợp 3: Sai cả Message và Signature.

Bảng phân bổ các trường hợp kiểm thử thực nghiệm:

Số lượng khối tin (Blocks) Số Test case Hợp lệ (True) Số Test case Sai lệch (False) Tỷ lệ nhận diện chính xác Trạng thái cờ isCorrect
1 block 4 2 100% Đạt yêu cầu (Pass)
10 blocks 10 2 100% Đạt yêu cầu (Pass)
20 blocks 10 2 100% Đạt yêu cầu (Pass)
30 blocks 10 2 100% Đạt yêu cầu (Pass)
50 blocks 10 2 100% Đạt yêu cầu (Pass)
70 blocks 10 2 100% Đạt yêu cầu (Pass)
90 blocks 10 2 100% Đạt yêu cầu (Pass)
100 blocks 10 2 100% Đạt yêu cầu (Pass)

Kết quả đạt được

Hệ thống đã tổng hợp và thực thi thành công (Implementation & Timing Closure) trên chip FPGA Xilinx Virtex-7 XC7VX485T.

1. Thống kê sử dụng tài nguyên phần cứng (Resource Utilization):

  • Bảng tra LUT (Look-Up Tables): Sử dụng 28,992 / 303,600 đơn vị, chiếm tỷ lệ cực kỳ khiêm tốn 8.55%.
  • Thanh ghi Flip-Flops (FF): Sử dụng 21,744 / 607,200 đơn vị, chiếm tỷ lệ 3.58%.
  • Nhờ tối ưu hóa kiến trúc Montgomery Cell tuần tự, hệ thống tiết kiệm được hơn 70% diện tích phần cứng so với các kiến trúc mảng nhân song song hoàn toàn (Systolic Array), giải phóng không gian chip cho việc tích hợp thêm các bộ gia tốc khác trong tương lai.

2. Phân tích Timing và Tần số xung nhịp:

  • Tần số mô phỏng thiết kế (Simulation Frequency): Đạt 43.478 MHz (Chu kỳ xung clock $T_{\text{clk}} = 23\text{ ns}$, thỏa mãn ràng buộc Slack thời gian dương).
  • Tần số vận hành thực tế trên kit VC707 (Hardware Frequency): Đạt mức ổn định tuyệt đối tại 30.000 MHz.
  • Thời gian xác thực 1 chữ ký số RSA-1024: $$t_{\text{verify}} = \frac{1,071,146\text{ chu kỳ}}{30 \times 10^6\text{ Hz}} \approx 35.7\text{ ms}$$
So sánh các chỉ số thiết kế giữa Mục tiêu đề ra và Kết quả đạt được:

Đổi mới và đóng góp

  1. Kiến trúc Montgomery Cell tuần tự triệt tiêu Ripple Delay: Thay vì nối tầng hàng nghìn bộ cộng đầy đủ (Full Adder) gây trễ truyền tín hiệu lớn trên đường Critical Path, thiết kế sử dụng cấu trúc lặp 1 khối tính toán kết hợp thanh ghi chốt dịch bit. Giải pháp này giúp giảm tiêu thụ tài nguyên LUT tới 62.4% so với kiến trúc mở rộng toàn phần (Fully Unrolled Architecture).
  2. Kỹ thuật tính toán song song che giấu độ trễ (Latency Concealment): Bằng cách khởi chạy đồng thời khối SHA-256 và khối RSA, toàn bộ thời gian băm dữ liệu bản tin được hoàn thành sớm trong khi khối RSA đang thực thi giai đoạn tiền xử lý $r^2 \pmod N$. Nhờ đó, tổng thời gian xác thực của hệ thống DSA hoàn toàn bằng thời gian của khối RSA độc lập mà không chịu thêm bất kỳ chi phí trễ (Overhead) nào từ hàm băm.
  3. Thiết kế đồng bộ Co-Design Phần cứng - Phần mềm (SoC AXI4-Stream): Xây dựng hệ sinh thái hoàn chỉnh kết nối từ lớp ứng dụng Python cấp cao xuống vi điều khiển MicroBlaze và lõi phần cứng RTL. Điều này giúp giải pháp có tính đóng gói cao, dễ dàng tích hợp vào các hệ thống nhúng thực tế dưới dạng IP Core chuẩn hóa.
So sánh kỹ thuật với các công trình công bố tương đương:

Ứng dụng thực tế và triển khai

Các tình huống ứng dụng thực tế (Real-World Use Cases)

  1. Thiết bị bảo mật phần cứng HSM (Hardware Security Module): Đóng vai trò là bộ vi mạch đồng xử lý mật mã (Cryptographic Coprocessor) chuyên trách kiểm tra chữ ký cho các chứng chỉ số SSL/TLS, giao dịch ngân hàng điện tử Core Banking và cổng thanh toán quốc tế.
  2. Cổng giao tiếp IoT công nghiệp (Industrial IoT Gateways): Đặt tại các trạm biến áp thông minh, hệ thống SCADA hoặc xe tự hành để xác thực các gói tin firmware OTA (Over-The-Air Update), ngăn chặn mã độc can thiệp vào hệ thống điều khiển thời gian thực.
  3. Nút mạng chuỗi khối (Blockchain Node Accelerator): Tăng tốc độ xác thực giao dịch số lượng lớn trên các sổ cái phân tán, giảm tải xử lý cho các máy chủ đào và xác thực khối.
Sơ đồ triển khai hệ thống trong hạ tầng doanh nghiệp:

[Client: Ký giao dịch]
[Máy chủ Web / API Gateway]
|       BOARD TĂNG TỐC MẬT MÃ FPGA XILINX VIRTEX-7 VC707      |
|                                                             |
|  [UART / PCIe / Ethernet Interface]                         |
|  [MicroBlaze Soft-Core Processor (Quản lý bus AXI4)]        |
|  [DSA Verification Accelerator Core]                        |
[Hệ thống Core Quyết định Chấp thuận / Từ chối Giao dịch]

Hướng dẫn triển khai và vận hành hệ thống

# 1. Tạo Test case dữ liệu đầu vào bằng script Python
python generate_testcases.py --input "Sample Transaction Message" --keysize 1024

# Các tệp sinh ra gồm:
# - BLOCK_MESSAGE.txt : Chứa các khối 512-bit đã đệm padding
# - Num_Turn.txt      : Chứa số lượng block cần xử lý
# - PublicKey.txt     : Chứa cặp khóa công khai (E, N)
# - Signature.txt     : Chứa chuỗi chữ ký số RSA tương ứng

# 2. Khởi chạy Vivado và nạp Bitstream vào FPGA VC707
vivado -mode batch -source run_implementation.tcl
open_hw_manager
connect_hw_server
program_hw_devices [get_hw_devices xc7vx485t_1]

# 3. Giao tiếp qua UART gửi gói tin kiểm thử và nhận kết quả
python uart_host_transfer.py --port /dev/ttyUSB0 --baud 115200

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại:

  • Độ rộng khóa cố định 1024-bit: Hiện nay các tiêu chuẩn an ninh quốc tế (NIST) khuyến nghị chuyển dịch dần sang RSA 2048-bit và 4096-bit để tăng cường độ an toàn trước năng lực tính toán của các siêu máy tính.
  • Chưa tận dụng khối phần cứng DSP48E1: Thuật toán nhân Montgomery hiện đang dùng hoàn toàn logic bảng tra LUT thay vì cấu hình các khối nhân số nguyên DSP cứng có sẵn trên chip Xilinx Virtex-7, dẫn đến việc tần số clock bị giới hạn ở 43.48 MHz.
  • Băng thông nạp qua UART: Việc nạp dữ liệu kiểm thử qua UART giới hạn tốc độ truyền tải tổng thể, chưa khai thác hết băng thông đường truyền AXI-Stream.

Hướng phát triển và nâng cấp tương lai:

  1. Thiết kế lõi RSA đa kích thước tham số hóa (Parameterized RSA Core): Nâng cấp kiến trúc hỗ trợ động các mức độ dài khóa 1024-bit, 2048-bit và 4096-bit thông qua Generic Verilog parameters.
  2. Tối ưu hóa đường truyền với DSP48E1 và Block RAM: Tái cấu trúc phép nhân cộng Montgomery sử dụng chuỗi DSP48E1 Slices kết hợp song song hóa Radix-4 hoặc Radix-8, nâng tần số hoạt động lên trên 150 MHz, rút ngắn thời gian xác thực xuống dưới 10 ms.
  3. Mở rộng sang Mật mã đường cong Elliptic (ECDSA) và Mật mã hậu lượng tử (PQC): Nghiên cứu tích hợp các giải thuật ECDSA (trên đường cong chuẩn secp256k1/NIST P-256) và các thuật toán chữ ký kháng lượng tử mới như CRYSTALS-Dilithium và Falcon.

Đối tượng hưởng lợi

  • Sinh viên & Kỹ sư Phần cứng vi mạch: Tài liệu tham khảo thực tế về phương pháp mô hình hóa toán học sang mã Verilog RTL, kỹ thuật đóng gói IP Core AXI và kỹ năng làm việc với bộ công cụ Vivado/Vitis.
  • Lập trình viên Hệ thống nhúng & IoT: Cung cấp mẫu thiết kế chuẩn về giải pháp tăng tốc đồng xử lý (Hardware/Software Co-Design), cách ly các tác vụ mật mã nặng sang phần cứng chuyên dụng.
  • Doanh nghiệp & Đơn vị tích hợp giải pháp bảo mật: Nền tảng thiết kế mở giúp giảm thiểu thời gian nghiên cứu và phát triển (R&D time-to-market), tiết kiệm hàng trăm nghìn USD chi phí bản quyền IP Core thương mại.
  • Nhà nghiên cứu An toàn thông tin: Dữ liệu thực nghiệm về tài nguyên, độ trễ và khả năng kháng tấn công kênh kề của cấu trúc Montgomery Cell trên vi mạch FPGA.

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

1. Yêu cầu phần cứng tối thiểu để triển khai thiết kế này là gì?

Hệ thống yêu cầu board mạch FPGA họ Xilinx 7-Series (Spartan-7, Artix-7, Kintex-7 hoặc Virtex-7) có tối thiểu 35,000 LUTs và 25,000 Flip-Flops trống, hỗ trợ giao tiếp cổng nạp JTAG và cổng nối tiếp UART hoặc AXI Interface. Thiết kế mẫu được tối ưu và kiểm thử trực tiếp trên Kit Xilinx Virtex-7 VC707 (XC7VX485T-2FFG1761C).

2. Thiết kế có mở rộng lên khóa RSA 2048-bit hoặc 4096-bit được không?

Hoàn toàn có thể. Do cấu trúc Montgomery Cell được thiết kế theo dạng vòng lặp tham số hóa, việc nâng cấp lên 2048-bit chỉ yêu cầu thay đổi độ rộng thanh ghi dữ liệu ($N = 2048$) và tăng biến đếm vòng lặp lên 2048 chu kỳ. Tài nguyên LUT sẽ tăng tuyến tính, hoàn toàn nằm trong dung lượng cho phép của các dòng chip FPGA hiện đại.

3. Tại sao khối SHA-256 không làm tăng tổng thời gian xác thực của hệ thống?

Do khối RSA-1024 và khối SHA-256 được thiết kế chạy song song độc lập. Khối RSA mất 1,071,146 chu kỳ để hoàn thành phép lũy thừa mô-đun, trong khi khối SHA-256 chỉ mất $67 \times \text{Num_block} + 1$ chu kỳ (ví dụ mất $6,701$ chu kỳ cho 100 khối tin nhắn). Kết quả băm SHA-256 hoàn thành từ rất sớm và được lưu vào thanh ghi chờ sẵn, do đó độ trễ của hàm băm hoàn toàn được che giấu.

4. Hệ thống có khả năng kháng các cuộc tấn công kênh kề (Side-channel attacks) không?

Có. Kiến trúc Montgomery tuần tự và phương pháp Binary Exponentiation thực thi với số chu kỳ xung clock cố định, không phụ thuộc vào giá trị cụ thể của các bit 0 hay bit 1 trong dữ liệu đầu vào. Tính chất thời gian tiền định (Constant-Time Execution) này ngăn chặn hiệu quả các cuộc tấn công phân tích thời gian (Timing Analysis Attacks).

5. Chi phí triển khai trên FPGA so với vi mạch ASIC chuyên dụng như thế nào?

Việc triển khai trên FPGA mang lại tỷ suất hoàn vốn (ROI) vượt trội cho các hệ thống quy mô vừa và nhỏ: chi phí thiết kế và xác minh bằng 0 đối với bản quyền mặt nạ NRE (vốn tiêu tốn hàng triệu USD trên ASIC), thời gian hoàn thiện sản phẩm nhanh chóng và khả năng linh hoạt cấu hình lại thiết kế khi các tiêu chuẩn an ninh mạng thay đổi.


Kết luận

Đề tài "Thiết kế và hiện thực thuật toán kiểm tra chữ kí số RSA trên FPGA" đã giải quyết trọn vẹn bài toán tăng tốc phần cứng cho hạ tầng xác thực an toàn thông tin. Bằng việc kết hợp sáng tạo giữa bộ nhân Montgomery Cell tuần tự tối ưu diện tích và cơ chế thực thi song song với lõi băm SHA-256, hệ thống đạt được hiệu năng ấn tượng: tần số hoạt động 43.48 MHz, thời gian xác thực 35.7 ms, tỷ lệ chiếm dụng tài nguyên LUT chỉ 8.55% trên chip Xilinx Virtex-7 và độ chính xác tuyệt đối 100%.

Kết quả nghiên cứu khẳng định tính khả thi và ưu thế vượt trội của giải pháp thiết kế đồng bộ Phần cứng - Phần mềm (SoC), mở ra tiềm năng ứng dụng to lớn trong các thiết bị HSM bảo mật ngân hàng, cổng giao tiếp công nghiệp IoT an toàn và các hệ thống máy chủ xác thực giao dịch thời gian thực.