Thực hiện và đánh giá kết quả

Một phần của tài liệu Luận án tiến sĩ kỹ thuật điện tử bảo mật bitstream FPGA (Trang 84)

3.3 Nâng cao hiệu năng của hệ thống

3.3.2. Thực hiện và đánh giá kết quả

Kết quả thực nghiệm được xây dựng trên FPGA Xilinx Virtex-6. Tài nguyên phần cứng được sử dụng cho mã hóa AES-256 và SHA-512 chỉ chiếm một phần rất nhỏ tài nguyên hệ thống, xem Bảng 3.4.

Với việc sử dụng AXI-Master với hai bộ đệm dữ liệu FIFO, ta thấy phần tài nguyên hệ thống chỉ tăng thêm khoảng 1,19% nhưng hiệu năng thực hiện của AES-256 và SHA-512 được cải thiện khoảng bốn lần nhanh hơn, như được trình bày trong Bảng 3.5.

71

Bảng 3.4 Sử dụng phần cứng của AES-256 và SHA-512 (Virtex-6)

Lõi IP

Tài nguyên sử dụng

Registers LUTs Slice

AES-256 3.096 (1,02%) 3.751 (2,38%) 1.293 (3,43%)

SHA-512 2.246 (0,74%) 2.299 (1,46%) 843 (2,25%)

AXI-Master 443 (0,15%) 1.387 (0,92%) 455 (1,19%)

Bảng 3.5 Hiệu năng thực hiện của SHA-512 và AES-256 (Virtex-6)

Lõi IP

Thơng lượng*

Khơng có AXI-Master Có AXI-Master

SHA-512 73,8 Mbps 309,9 Mbps

AES-256 126,4 Mbps 492,9 Mbps

*Thông lượng: Thông lượng của các bộ mã hóa/xác thực/nén được tính tốn bằng kích

thước dữ liệu đầu vào chia cho tổng thời gian mà các bộ mã đó thực hiện biến đổi xong hồn tồn khối dữ liệu đầu vào đó.

3.4 Đánh giá và so sánh với các nghiên cứu liên quan

Bảo vệ tính bảo mật và tính tồn vẹn của một bitstream cấu hình là điều cần thiết cho cấu hình lại một phần năng động (DPR) của các FPGA. Điều này là do khi bitstream bị sai lệch hoặc giả mạo có thể gây ra thiệt hại cho FPGA. Trong bài báo [30], Yohei Hori và

đồng sự trình bày một phương pháp bảo vệ bitstream tốc độ cao và sử dụng hiệu quả tài nguyên của hệ thống DPR bằng cách sử dụng mã hóa AES-GCM, đây là một thuật tốn mã hóa được xác thực. Phương pháp này cũng cung cấp một cơ chế phục hồi lỗi và khả năng chống giả mạo chống lại xóa, chèn, và làm rối loạn khối cấu hình. Kết quả thực hiện và đánh giá cho thấy rằng phương pháp này đạt được một hiệu suất cao về tốc độ và tài nguyên phần cứng sử dụng so với các phương pháp sử dụng vi xử lý nhúng hoặc sử dụng đồng thời hai thuật toán mã AES và SHA riêng biệt. Tuy nhiên, nó thiếu thực sự linh hoạt khi thay đổi và lựa chọn các thuật tốn mã. Vì vậy, phương pháp này bị ràng buộc cố định thuật tốn giữa hai phía nhà cung cấp dịch vụ và người dùng cuối.

Giải pháp của luận án này là thực hiện các khối AES và SHA trong vùng logic cấu hình lại được từng phần để tăng tính linh hoạt và khi thay đổi và lựa chọn các thuật toán mã. Vấn đề tài nguyên (slice) hệ thống tuy có nhiều hơn nhưng được giải quyết bằng các giải phóng các bộ mã hóa này khi khơng sử dụng đến. Vấn đề tốc độ thực hiện cũng được

72 cải thiện hơn nhiều so với việc sử dụng vi xử lý nhúng. Tuy không đạt được tốc độ cao như phương pháp của [30] (do các tác giả này thực hiện bộ AES-GCM trong v ng logic tĩnh), nhưng như chỉ ra ở Bảng 3.6, ta thấy kết quả là gần tương đương (do luận án này sử dụng các bộ AES-256 và SHA-512 thay vì AES-128 và SHA-256). Đối với ứng dụng bảo mật trong cập nhật từ xa, thường xảy ra khơng thường xun, thì tính linh động trong thực hiện được xem là lựa chọn ưu tiên hàng đầu.

Bảng 3.6 Hiệu năng của các bộ mã hóa trong các hệ thống bảo mật

Hệ thống FPGA Thuật tốn Slice Thơng lượng

[30] XC5VLX50T AES-128 SHA-256 AES-GCM 675 (10%) 567 (7%) 1,226 (16%) 1.164 Mbps 701 Mbps 1.067 Mbps Hệ thống của luận án này XC6VLX240T AES-256 SHA-512 1.293 (3,43%) 843(2,25%) 492,9 Mbps 309,9 Mbps Trong [83], I. Gonzalez và F.J. Gomez-Arribas trình bày các lựa chọn thay thế khác nhau để tăng hiệu suất của các thuật toán mã khối trong các hệ thống nhúng dựa trên bộ xử lý lõi mềm MicroBlaze. Để so sánh, một số hiện thực các thuật tốn mật mã thơng thường nhất đã được triển khai. Các kiến trúc tùy chọn được cung cấp bởi MicroBlaze cùng với những lựa chọn khác nhau để kết nối lõi tùy chỉnh tăng tốc đã được xem xét và đánh giá. Không cần một nỗ lực thiết kế tuyệt vời, sự cải tiến đạt hai lần nhanh hơn so với tất cả các giải pháp phần mềm. Các tác giả chỉ ra rằng một số yếu tố hạn chế của việc cải thiện hiệu suất trong hệ thống nhúng dựa trên FPGA là:

- Cơng nghệ của logic cấu hình,

- Tốc độ truyền dữ liệu của các giao diện giữa bộ vi xử lý nhúng và logic cấu hình, - Tốc độ của bộ vi xử lý nhúng và

- Băng thông bộ nhớ.

Kết quả chứng minh rằng một trong những nút thắt cổ chai quan trọng nhất là băng thông và độ trễ của giao diện kết nối bộ vi xử lý nhúng vào logic cấu hình lại. Nếu giao diện tốt nhất được lựa chọn, các nhà thiết kế có thể có được một sự cải tiến của nhiều hơn rất nhiều so với các giải pháp phần mềm. Như vậy, trong một hệ thống dựa trên MicroBlaze, sự linh hoạt được cung cấp bởi FPGA có thể được sử dụng để tăng thông lượng cho các ứng dụng bảo mật.

3.5 Kết luận chƣơng

Hệ thống cấu hình lại được từng phần dựa trên FPGA có thể kết hợp bộ xử lý nhúng với các phần cứng chuyên dụng sẽ như là một nền tảng phần cứng của giải pháp hệ thống trên chip SoC. Từ nền tảng phần cứng này c ng với các phần mềm nhúng, chúng ta có thể thiết lập nên các hệ thống đáp ứng mọi yêu cầu thiết kế đề ra. Tuy nhiên, các hệ thống dựa trên FPGA thường bị ràng buộc tốc độ và hạn chế về tài nguyên. Vì vậy việc thiết kế thêm

73 các tính năng bảo mật vào các hệ thống này thường phải cân nhắc và xem xét trên nhiều khía cạnh khác nhau.

Trong chương này, với mục tiêu là tăng hiệu năng, tính linh hoạt và tối ưu tài nguyên hệ thống của các hệ thống nhúng cấu hình lại được từng phần khi thực hiện các giải pháp bảo mật như đã đề xuất trong Chương 2, luận án này đã đề xuất và thực hiện:

- Sử dụng các thuật tốn mã hóa và xác thực trong khu vực cấu hình lại được, đảm bảo tất cả các file bitstream từng phần ln ln được mã hóa và xác thực trước khi trao đổi qua mạng và cập nhật lại hệ thống. Việc thêm bộ giải mã AES-256 và bộ xác thực SHA-512 làm cho hệ thống an toàn hơn, tốc độ thực hiện nhanh hơn mà không làm tăng đáng kể tài nguyên của hệ thống.

- Sử dụng thuật toán nén RLE để nén bitstream. Thuật toán cho một kết quả tốt thể hiện ở tỉ số nén và giải pháp giải nén thực hiện dễ dàng trên hệ thống nhúng dựa trên FPGA. Kỹ thuật nén này kết hợp với khả năng cấu hình lại được từng phần của FPGA sẽ đem đến một giải pháp hiệu quả trong việc giảm dung lượng bộ nhớ lưu trữ và làm giảm thời gian cập nhật hệ thống.

- Giải pháp sử dụng lõi AXI-Master với hai bộ đệm dữ liệu FIFO đã giải quyết vấn đề băng thông giữa bộ vi xử lý nhúng và phần logic cấu hình. Như vậy, trong một hệ thống nhúng dựa trên FPGA, với các lõi tăng tốc có sẵn có thể được sử dụng để tăng thơng lượng cho các ứng dụng bảo mật.

74

CHƢƠNG 4

MƠ HÌNH THỬ NGHIỆM HỆ THỐNG CẤU HÌNH LẠI ĐƢỢC TỪNG PHẦN DỰA TRÊN FPGA

Giới thiệu: Chương này trình bày các bước, các cơng cụ để xây dựng mơ hình mẫu trên

thiết bị FPGA ML605 Virtex-6 XC6VLX240T của Xilinx và FPGA Atlys Spartan-6 LX45 của Digilent giúp cho việc kiểm tra và đánh giá về bảo mật hệ thống nhúng cấu hình lại được từng phần như đã đề xuất ở Chương 2 và 3. Mơ hình này cùng với các mã thuật tốn (code) được cung cấp đầy đủ trong phần phụ lục sẽ là một cơ sở dữ liệu quan trọng cho các nghiên cứu kế thừa về sau.

4.1 Xây dựng hệ thống 4.1.1. Cài đặt hệ thống 4.1.1. Cài đặt hệ thống

Để kiểm tra framework, giao thức và các giải pháp bảo mật đã đề xuất, luận án này đã xây dựng một hệ thống mẫu thử nghiệm trong đó bao gồm một nền tảng nhúng cấu hình lại được dựa trên board phát triển FPGA ML605 Virtex-6 XC6VLX240T của Xilinx và một máy tính xách tay đóng vai trị của nhà cung cấp dịch vụ (Hình 4.1). Board FPGA ML605 Virtex-6 XC6VLX240T [104] và máy tính xách tay được kết nối với nhau thông qua một kết nối Ethernet. Một hệ thống tương tự cũng được thực hiện để so sánh hiệu năng và tài nguyên hệ thống trên board phát triển FPGA Atlys Spartan-6 LX45 [105].

FPGA ML605 Virtex-6 XC6VLX240T FPGA Atlys Spartan-6 LX45

75 Bảng 4.1 sau đây cho ta thấy một số thông số kỹ thuật đặc trưng của FPGA ML605 Virtex-6 XC6VLX240T của Xilinx (thuộc dòng FPGA cao cấp) và FPGA Atlys Spartan-6 LX45 (thuộc dịng FPGA chi phí thấp). Việc luận án này chọn hai dịng FPGA khác nhau giúp cho việc khảo sát và đánh giá đầy đủ hơn và để giúp cho các nhà thiết kế bảo mật có những lựa chọn ph hợp hơn.

Bảng 4.1 So sánh các thông số kỹ thuật của Virtex-6 và Spartan-6

Đặc tính kỹ thuật Xilinx ML605 Virtex-6 Digilent Atlys Spartan-6

Slices 37.880 6.822

LUTs of Slice 4 4

Registry 301.440 54.576

Clock 200MHz 100MHz

Pin 1156-pin BGA 324-pin BGA

SPI Flash 128MB 64MB

DDRAM 512MB DDR3 128MB DDR2

Ethernet 10/100/1000 10/100/1000

USB USB-to-UART, USB-A

Host, USB Mini-B

USB-to-UART, USB-HID port (for mouse/keyboard)

Video DVI connector 2 x HDMI video input ports

and 2 x HDMI output ports

4.1.2. Công cụ thực hiện thiết kế

Để xây dựng hệ thống mẫu thử nghiệm, bên phía FPGA, luận án này sử dụng bộ công cụ Embedded Development Kit (EDK) phiên bản 14.1 của Xilinx. Bộ công cụ này gồm các phần chức năng với các bước thực hiện như sau:

- Công cụ ISE Project Navigator dùng để xây dựng, thiết kế các khối IP (AES-256, SHA-512) bằng ngôn ngữ mơ tả phần cứng HDL, Hình 4.2. Sau khi q trình thiết kế và chạy mô phỏng thành công, chúng ta sử dụng trình tạo lõi IP Core Generator để đóng gói các lõi IP này cho các ứng dụng về sau. Trình mơ phỏng Simulation và trình tạo lõi IP Core Generator đều được tích hợp bên trong bộ công cụ ISE Project Navigator.

76

Hình 4.2 Cơng cụ thiết kế ISE Project Navigator

- Công cụ Xilinx Platform Studio (XPS): dùng để thiết kế nền tảng phần cứng cho hệ thống nhúng dựa trên FPGA. Từ đây chúng ta có thể tích hợp vào hệ thống các lõi IP phần cứng được hỗ trợ bởi nhà sản xuất hoặc các lõi IP của người sử dụng (User IP), ví dụ như lõi AES-256 và SHA-512 của luận án này, Hình 4.3. Sau đó, nền tảng phần cứng (Hardware Platform) này được xuất sang cho các thiết kế tiếp theo trong các công cụ Xilinx PlanAhead và Xilinx Software Development Kit.

77 - Công cụ Xilinx Software Development Kit hỗ trợ thiết kế các phần mềm nhúng code C, C++, Hình 4.4. Ngồi ra, từ bộ cơng cụ này ta có thể xây dựng các trình điều khiển, ví dụ như trình quản lý cập nhật từng phần FPGA.

Hình 4.4 Cơng cụ thiết kế Software Development Kit

- Cuối cùng là công cụ thiết kế Xilinx PlanAhead, Hình 4.5, dùng để thiết kế cho việc thực hiện cấu hình lại được từng phần. Cơng cụ này cho phép chúng ta bố trí khu vực và xác định kích thước các phân vùng để chứa các mô đun thành phần khi cấu hình vào hệ thống để thực hiện các chức năng đã mô tả trước đó.

78

4.1.3. Thiết lập vi xử lý nhúng MicroBlaze và giao thức TCP/IP

Trên FPGA Virtex-6 XC6VLX240T, luận án này nhúng một bộ vi xử lý lõi mềm MicroBlaze bằng cách sử dụng bộ công cụ Xilinx Platform Studio (XPS) phiên bản 14.1. Bộ công cụ XPS cho phép các nhà thiết kế dễ dàng tạo ra các nền tảng nhúng dựa trên bộ vi xử lý MicroBlaze hoặc PowerPC-405. XPS cung cấp một loạt các thiết bị ngoại vi như UARTs, bộ đếm, Ethernet, bộ điều khiển bộ nhớ, các cổng vào ra mục đích chung GPIOs…, và một giải pháp kết nối dựa trên cấu trúc bus IBM CoreConnect [100]. Các công cụ biên dịch GNU [106] của MicroBlaze và PowerPC-405 đã được sử dụng trong các quy trình thiết kế phần mềm. Các mã nguồn cho các ứng dụng có thể được viết bằng ngôn ngữ cấp cao như C và C + +.

Đối với hệ thống mẫu thử nghiệm hiện tại, luận án này sử dụng hệ điều hành Xilkernel [107] của Xilinx, Hình 4.6. Xilkernel là một kernel nhỏ nhưng rất mạnh mẽ. Nó có các thư viện mở được cung cấp trong công cụ EDK cho phép người d ng t y biến mức độ cao cả về mặt kích thước lẫn chức năng. Nó đạt được các tính năng địi hỏi cho một kernel nhúng nhỏ gọn. Xilkernel làm việc được trên Microblaze và PowerPC. Nó có thể được sử dụng để phục vụ cho các mục đích ở mức cao hơn như là kết nối mạng, xử lý hình ảnh và âm thanh.

Các đặc trưng của Xilkernel

- Là một hệ điều hành nhúng điển hình.

- Ứng dụng riêng rẽ trên hệ điều hành này rất trực quan. - Cho phép người sử dụng lập trình ở mức độ trừu tượng.

- Có rất nhiều ứng dụng trên hệ điều hành này như: Hệ thống tập tin, quản lý thời gian. - Có một thư viện nhỏ nhưng lại cung cấp đầy đủ các dịch vụ thiết yếu.

79 Như đã đề cập ở trên, luận án này sử dụng bộ công cụ phần mềm XPS để thực hiện và thiết lập bộ vi xử lý MicroBlaze. Sự lựa chọn các thông số và các thành phần khác nhau cho MicroBlaze được thực hiện thông qua trình Base System Builder [108]. Với nền tảng mẫu thử nghiệm, luận án này lựa chọn các thông số và các thành phần như trong Bảng 4.2.

Để thực hiện giao thức kết nối TCP/IP, luận án này sử dụng giao thức Lightweight IP (lwIP), đây là một giao thức mạng mã nguồn mở cho các hệ thống nhúng. EDK của Xilinx cung cấp lwIP t y biến để chạy trên các hệ thống nhúng có chứa một bộ xử lý PowerPC hoặc là MicroBlaze.

Để trao đổi dữ liệu, FPGA cần xác định rõ địa chỉ IP và lắng nghe bản tin trên một cổng cụ thể. Nếu bản tin này là bản tin cập nhật một kết nối sẽ được thiết lập cho phép FPGA và máy tính giao tiếp với nhau.

Bảng 4.2 Các tham số và các thành phần của MicroBlaze

Tham số/Thành phần Giá trị

Tần số làm việc 100 MHz

I cache 16 KB

D cache 64 KB

Ethernet Controller Tri-mode EMAC

Serial interface RS232_UART lite

DRAM controller MCB_DDR3

Các bước thực hiện kết nối tại FPGA:

- Chương trình được thực hiện bắt đầu từ hàm main(). Việc cấu hình cho Xilkernel với luồng tĩnh được gọi là main_thread. Luồng này thiết lập LwIP bằng việc sử dụng các hàm lwip_init() và tạo ra một luồng mạng mới có tên là network_thread sử dụng hàm sys_thread_new(). Main () {…. sys_thread_new("main_thrd", (void(*)(void*))main_thread, 0, THREAD_STACKSIZE, DEFAULT_THREAD_PRIO); …..}

- Network_thread sẽ thiết lập cho một giao thức mạng gồm các thông số địa chỉ MAC và IP sử dụng hàm xemac_add(). Hàm này này sẽ lấy địa chỉ MAC và IP cho giao tiếp và khởi chạy nó.

80

Unsigned char mac_ethernet_address [] = {0x00,0x0a,0x35,0x00,0x01,0x02}; netif = &server_netif;

/*Khởi tạo địa chỉ IP để sử dụng*/ IP4_ADDR(&ipaddr, 192, 168, 1, 10); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gw, 192, 168, 1, 1);

xemac_add(netif, &ipaddr, &netmask, &gw, mac_ethernet_address, EMAC_BASEADDR)

- Tạo ra một luồng mới để xử lý các yêu cầu được gửi tới :

sys_thread_new("testethernet",test_ethernet_thread,0,THREAD_STACKSIZE, DEFAULT_THREAD_PRIO);

- Luồng mới này sẽ lắng nghe các yêu cầu và chấp nhận chúng sử dụng hai hàm được hỗ trợ bởi thư viện Lwip là lwip_listen() và lwip_accept().

- Quá trình truyền nhận dữ liệu được thực hiện bằng hàm read(sd, recv_buf, RECV_BUF_SIZE). Hàm này trả về số byte đã nhận được với ý nghĩa của các thông số như sau: recv_buf là địa chỉ v ng nhớ để lưu dữ liệu, RECV_BUF_SIZE

Một phần của tài liệu Luận án tiến sĩ kỹ thuật điện tử bảo mật bitstream FPGA (Trang 84)

Tải bản đầy đủ (PDF)

(120 trang)