Bộ điều khiển cấu hình – Configuration Controller

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 74)

Bộ điều khiển cấu hình là một phần của mô-đun tĩnh. Nó có nhiệm vụ tải hoặc gỡ bỏ các mô-đun động. Thông thường, bộ điều khiển cấu hình là một bộ vi điều khiển. Bộ điều khiển cấu hình làm việc một cách tự động. Điều đó có nghĩa cấu hình lại không cần bất kỳ một việc điều khiển bằng tay. Tất cả việc chúng ta cần làm là lập trình cho vi điều khiển biết khi nào cần cấu hình và cấu hình với mô-đun nào để nó thực thi. Điều này có thể được thực hiện bằng cách sử dụng chương trình C hoặc C++

t y thuộc vào sự thuận tiện của các phương tiện thiết kế.

3.1.2. Các ƣu điểm của cấu hình lại từng phần

61

Các ứng dụng: Cấu hình lại từng phần rất hữu ích trong một loạt các ứng dụng trong

nhiều ngành công nghiệp. Đặc biệt là các ngành công nghiệp hàng không vũ trụ và quốc phòng đã tận dụng tối đa các đặc điểm ưu việt của cấu hình lại từng phần.

Tăng hiệu năng của hệ thống: thông qua việc cấu hình lại được từng phần, phần còn

lại của hệ thống vẫn có thể tiếp tục hoạt động. Nó không làm mất hiệu năng hoặc chức năng của phần không bị ảnh hưởng của thiết kế. Nó cũng cho phép nhiều ứng dụng chạy trên c ng một FPGA bằng cách chia sẻ tài nguyên logic phần cứng cấu hình lại được từng phần.

Khả năng thay đổi phần cứng: Các FPGA có thể được cập nhật bất cứ lúc nào, tại chỗ

hoặc từ xa. Cấu hình lại từng phần cho phép sự hỗ trợ một cách dễ dàng, và cập nhật các phần cứng chức năng một cách linh hoạt.

Chia sẻ phần cứng: Cấu hình lại từng phần cho phép chia sẻ phần cứng để chạy nhiều

ứng dụng khác nhau trên c ng một FPGA. Lợi ích bao gồm giảm tài nguyên thiết bị, giảm điện năng tiêu thụ, board mạch nhỏ hơn, và tổng chi phí thấp hơn.

Giảm thời gian cấu hình lại: Thời gian cấu hình là tỷ lệ thuận với kích thước của bitstream. Cấu hình lại từng phần cho phép thực hiện các thay đổi nhỏ mà không cần phải cấu hình lại toàn bộ thiết bị. Bằng cách cấu hình lại bitstream từng phần thay vì cấu hình lại toàn bộ thiết bị, nên tổng thời gian cấu hình lại sẽ ngắn hơn.

3.2 Tối ƣu hóa tài nguyên phần cứng

Tài nguyên phần cứng của hệ thống nhúng cấu hình lại được từng phần dựa trên FPGA có nhiều ràng buộc và hạn chế. Từ những đặc tính và ưu nhược điểm của hệ thống cấu hình lại được từng phần đã nêu trên c ng với việc xem xét thực hiện bảo mật hệ thống cho các ứng dụng cập nhật được từ xa, để tối ưu hóa tài nguyên của hệ thống, luận án này đề xuất hai giải pháp: Giải phóng các bộ mã hóa khỏi logic phần cứng khi không sử dụng đến và nén bitstream cấu hình để giảm dung lượng bộ nhớ lưu trữ.

3.2.1. Tối ƣu hóa tài nguyên logic

Mục tiêu của luận án này là thực hiện thiết kế hệ thống mà phần tĩnh và các mô-đun cấu hình lại sau bước thiết kế ban đầu thì có thể phát triển một cách độc lập. Tức là, sau đó các mô-đun cấu hình lại có thể được phát triển mà không cần có sự tồn tại của hệ thống tĩnh. Hơn nữa, các mô-đun này được đóng gói và có thể được chuyển giao giữa các nhà thiết kế khác nhau mà không có thêm bất kỳ bước tổng hợp hay đặt và định tuyến bổ sung. Điều này có thể thực hiện được do thành phần tĩnh và các nguồn tài nguyên định tuyến của FPGA được sử dụng cho truyền thông ở mức cao sẽ thực hiện cố định trong v ng tài nguyên của phần tĩnh.

62 Trong thiết kế bảo mật, luận án này xây dựng các bộ mã hóa, xác thực và nén bitstream trong phần cứng và cả trong phần mềm. Đối với phần cứng, luận án này xây dựng các bộ mã hóa và xác thực trong phần logic cấu hình lại được. Điều này là hữu ích vì chỉ mỗi khi có yêu cầu cập nhật hệ thống thì các khối chức năng mã hóa và xác thực được cấu hình vào FPGA để là nhiệm vụ của mình. Kết thúc phiên cập nhật, các khối chức năng này được giải phóng và nhường phần tài nguyên cho các ứng dụng khác. Sự kết hợp phần cứng cấu hình lại được và phần mềm nhúng làm cho hệ thống của luận án này thực sự linh hoạt và mềm dẻo. Sơ đồ của hệ thống như được thể hiện trong Hình 3.2.

Hình 3.2Sơ đồ khối của hệ thống nhúng cấu hình lại được dựa trên FPGA với lõi AES/SHA được thực hiện trong phân vùng cấu hình lại được.

3.2.1.1. Thực hiện phần tĩnh

Để thực hiện phần tĩnh với các ràng buộc về giao diện liên kết được phép đi qua v ng biên để kết nối với các phân v ng cấu hình lại được, nhà thiết kế phải lập kế hoạch hệ thống. Điều này được hỗ trợ bởi giao diện đồ họa người d ng GUI trong các công cụ thiết kế. Đối với các phân vùng cấu hình lại được lựa chọn, luận án này đảm bảo rằng phần logic tĩnh và các định tuyến sẽ không sử dụng bất kỳ phần tài nguyên trong các phân vùng này.

Như thể hiện trong Hình 3.2, hệ thống tĩnh bao gồm một bộ xử lý nhúng, một bộ điều khiển cấu hình lại, các giao tiếp truyền thông như UART, SystemACE, Ethernet, và giao diện kết nối macro bus.

63 Bộ điều khiển cấu hình lại được xây dựng thông qua lõi ICAP [96] và được điều khiển và giám sát thông qua giao diện người d ng.

3.2.1.2. Thực hiện các phân vùng cấu hình lại được

Như được trình bày trong Hình 3.2, các phân vùng PR#1, PR#2,..PR#N là các phân

v ng cấu hình lại được. Trong giải pháp của luận án này, một trong các phân v ng cấu hình lại được sẽ được thiết kế để có thể tải các lõi SHA/AES từ bên ngoài. Các lõi này sẽ thực hiện nhiệm vụ xác thực/giải mã các mô-đun từng phần trước khi cấu hình hoặc cập nhật lại. Sau mỗi lần thực hiện xong chức năng của mình, các lõi SHA/AES có thể được giải phóng nhường chỗ cho các ứng dụng khác.

3.2.1.3. Phân tích và đánh giá kết quả

Sự linh động và tiết kiệm tài nguyên cho hệ thống có thể được giải thích như sau: - Bởi vì sau các bước thiết kế ban đầu, các mô-đun từng phần có thể phát triển một

cách độc lập. Điều đó có nghĩa các bộ mã hóa AES và xác thực SHA có thể được phát triển, nâng cấp và tái sử dụng một cách linh động mỗi khi có yêu cầu mà không cần phải thiết kế lại toàn bộ hệ thống.

- Việc giải phóng các bộ mã hóa và xác thực khỏi v ng logic phần cứng khi không sử dụng sẽ làm cho hệ thống sử dụng tối ưu tài nguyên và giảm được năng lượng tiêu thụ hơn so với việc thiết kế các bộ mã hóa và xác thực này cố định trong phần cứng của FPGA. Như số liệu trong Bảng 3.1, ta thấy tài nguyên sử dụng cho AES- 256 và SHA-512 chiếm một phần đáng kể trong FPGA Spartan-6 của Xilinx. Việc giải phóng các phần tài nguyên này thực sự cần thiết và hữu ích.

Bảng 3.1 Sử dụng phần cứng của AES-256 và SHA-512

Lõi IP

Tài nguyên sử dụng

Registers LUTs Slice

AES-256 3.096 (5,67%) 3.751 (13,74%) 1.293 (18,95%)

SHA-512 2.246 (4,11%) 2.299 (8,42%) 848 (12,48%)

3.2.2. Tối ƣu vùng nhớ lƣu trữ

Từ số liệu cho trong Bảng 2.1 ở Chương 2. Ta thấy kích thước bitstream tăng dần theo các thế hệ FPGA. Kích thước này tiếp tục tăng nhanh trong các FPGA hiện đại và như vậy sẽ cần nhiều bộ nhớ hơn để lưu trữ các bitstream này.

64 Một trong những thách thức của việc sử dụng FPGA lớn là sự cần thiết phải lưu trữ dữ liệu cấu hình một cách đáng tin cậy, đặc biệt là đối với các FPGA sử dụng trong môi trường bức xạ khắc nghiệt. Bộ nhớ không bay hơi được sử dụng để lưu trữ các bitstream khởi tạo phải “cứng” với bức xạ (RAD-HARD). Vì bộ nhớ RAD-HARD thường có mật độ thấp hơn nhiều so với bộ nhớ thông thường, nên c ng với một dung lượng lưu trữ sẽ cần nhiều chip RAD-HARD hơn, dẫn đến tăng không gian của board. Hơn nữa, bộ nhớ RAD- HARD đắt hơn nhiều so với những bộ nhớ thông thường, kết quả chi phí hệ thống rất tốn kém chỉ để lưu trữ bitstream. Bởi vì các chi phí này, các nhà thiết kế hệ thống luôn ưu tiên tìm giải pháp để giảm kích thước của bitstream càng nhiều càng tốt.

Nén bitstream là một công việc quan trọng trong thiết kế hệ thống cấu hình lại vì nó làm giảm kích thước bitstream để giảm yêu cầu về bộ nhớ lưu trữ. Nó cũng cải thiện băng thông truyền tải trên mạng và do đó giảm được thời gian cập nhật hệ thống. Đặc biệt là trong các hệ thống cấu hình lại được từng phần.

Tỉ số nén thường được sử dụng để tính toán hiệu quả của các kỹ thuật nén và được định nghĩa như sau:

CR CP OP

 (3.1)

Trong đó CR (Compression Ratio) là tỉ số nén, CP (Compressed Program) kích thước

chương trình đã nén, OP (Original Program) kích thước chương trình gốc ban đầu. Như

vậy, thuật toán nén tốt sẽ có tỉ số nén càng nhỏ.

Đã có một số nghiên cứu điều tra tính hiệu quả của nén bitstream FPGA. Andreas Dandalis và K Prasanna [95] đề xuất thuật toán nén bitstream dựa trên hệ thống nhúng. Họ đã đề xuất một kỹ thuật nén để giảm thiểu bộ nhớ yêu cầu để chứa thông tin cấu hình của FPGA và có hiệu năng giải nén cao. Kỹ thuật này dựa trên kỹ thuật nén từ điển và được bắt nguồn từ thuật toán nén LZW. Hạn chế của thuật toán là cần một phần cứng giải nén đắt tiền. Seong và cộng sự [97] đề xuất một kỹ thuật nén sử dụng các mặt nạ bits (bitmask). Kỹ thuật này dung hòa được cả tỉ số nén và hiệu quả khi giải nén. Đây là kỹ thuật cải tiến của kỹ thuật nén từ điển. Kỹ thuật này được thiết kế để giảm kích thước của từ điển.

Ta thấy, tất cả những kỹ thuật nén trên yêu cầu mạch bổ sung để thực hiện việc giải nén. Phần cứng này cần không gian board bổ sung, làm tăng kích thước của thiết kế hệ thống. Căn cứ vào tính chất của bitstream và với framework như đã đề xuất và phân tích ở Chương 2, luận án này đề xuất và xây dựng thuật toán nén RLE (Run-Length Encoding) [98],[99] cho hệ thống của mình. Đây là thuật toán nén không tổn hao rất ph hợp cho ứng dụng nén bitstream.

Kỹ thuật nén RLE sẽ loại bỏ các các ký tự lặp lại liên tiếp. Các ký tự lặp lại này được gọi là “run”, một từ mã hóa điển hình của kỹ thuật nén RLE bao gồm có hai bytes. Byte

65 đầu tiên thể hiện số lượng các ký tự “run” và được gọi là “run count”. Byte thứ hai biểu diễn ký tự được lặp lại, giá trị của ký tự này nằm trong khoảng từ 0 đến 255, và nó được gọi là “run value”.

Ví dụ: Với một chuỗi sau gồm 15 ký tự “AAAAAAAAAAAAAAA” thì cần đến 15 bytes bộ nhớ để lưu trữ. Nhưng khi nén với RLE thì sẽ được “15A” và bộ nhớ yêu cầu chỉ là 2 bytes. Giá trị “15A” được gọi là một gói RLE (RLE packet).

Như vậy, nén RLE là hiệu quả với các tập tin có chứa rất nhiều dữ liệu lặp đi lặp lại như các tin văn bản, các hình ảnh có chứa v ng màu trắng hoặc đen lớn. Bitstream FPGA cũng có thể cho một tỷ lệ nén tốt đặc biệt là các là bitstream của một hệ thống thiết kế không đầy đủ.

3.2.2.1. Xây dựng thuật toán nén RLE trên máy chủ cập nhật

Thuật toán chương trình nén chạy trên máy tính chạy trên máy chủ cập nhật được thể hiện như lưu đồ sau. Dữ liệu đầu vào là file bitstream và đầu ra là file *.bit đã nén. Như đã được trình trong framework ở Chương 2, tất cả bitstream trong máy chủ cập nhật đều được nén và lưu trữ trong kho dữ liệu của mình. Chương trình nén này được xây dựng bằng phần mềm Visual C++.

66

3.2.2.2. Xây dựng thuật toán giải nén RLE trên hệ thống nhúng

Thuật toán giải nén là thuật toán ngược lại thuật nén như đã mô tả ở trên và được thực hiện thành công trên hệ thống nhúng cấu hình lại được từng phần dựa trên FPGA. Luận án này thực hiện đánh giá giải nén các bitstream có kích thước khác nhau, rồi tính thời gian giải nén. Kết quả đạt được như Bảng 3.2 sau:

Bảng 3.2 Kết quả giải nén bitstream trên hệ nhúng dựa trên FPGA

Dung lượng

bitstream nén (KB) Thời gian giải nén (s) Tốc độ giải nén (KB/s) 44 3.125 14.08 77 8.981 8.57 84 11.232 7.48 319 44.934 7.10 450 119.587 3.76

Bảng 3.2 thể hiện mối quan hệ giữa thời gian giải nén và kích thước của các bitstream đã nén. Chúng ta có thể thấy rằng với những bitstream có kích thước lớn thì tốc độ giải nén giảm. Lý do ở đây là vì những file bitstream kích thước lớn thường đạt được tỉ lệ nén thấp. Điều này hoàn toàn ph hợp với lý thuyết về các thuật toán nén đã nêu ở trên, “tỉ lệ nén tốt thì thời gian giải nén sẽ tăng hay tốc độ giải nén sẽ chậm”.

3.2.2.3. Đánh giá kết quả

Kết quả khảo sát về sự phụ thuộc của tỉ số nén CR vào dung lượng file bitstream đầu vào như Bảng 3.3.

Bảng 3.3 Kết quả nén bitstream trên máy tính

Dung lượng bitstream gốc (KB) Dung lượng bitstream nén (KB) Tỉ lệ nén (%) 72 44 61.11 278 77 27.70 469 84 17.91 1450 319 22.00 9017 450 4.99

67 Như vậy theo số liệu trong Bảng 3.3, ta có thể thấy rằng tỉ số nén có xu hướng giảm khi mà kích thước của file bitstream đầu vào tăng. Điều này là hoàn toàn có lợi bởi lẽ khi đó dung lượng của bộ nhớ lưu trữ sẽ giảm đi đáng kể. Tỉ số nén giảm có thể được giải thích như sau: khi kích thước file bitstream tăng thì số lượng các bit 0 và 1 lặp lại liên tiếp lớn hơn nhiều, đặc biệt là đối với các thiết kế không sử dụng hết tài nguyên của FPGA.

Thuật toán nén RLE là rất dễ thực hiện và không đòi hỏi nhiều tốc độ tính toán của CPU. Hơn nữa, nén RLE là thuật toán nén không tổn hao. Nó đảm bảo tính toàn vẹn của dữ liệu sau quá trình nén và giải nén. Đây là một trong những yêu cầu của nén bitstream. Vì vậy, đối với các hệ thống nhúng cấu hình lại được từng phần dựa trên FPGA, nén RLE là rất ph hợp để thực hiện và thực hiện một cách dễ dàng.

Về bảo mật, việc thêm thuật toán nén bitstream vào trong hệ thống mang lại nhiều lợi ích thiết thực như: giảm dung lượng bộ nhớ lưu trữ và băng thông truyền tải, giảm được thời gian mã hóa và giải mã, dẫn đến giảm được năng lượng tiêu thụ của hệ thống. Điều này đồng nghĩa với việc, c ng với một chi phí như khi thực hiện bảo mật với bitstream không nén, việc thực hiện bảo mật với bitstream nén có thể đạt được mức độ bảo mật cao hơn bằng cách sử dụng thuật toán mã phức tạp hơn hay độ dài khóa dài hơn. Ví dụ, thay vì sử dụng AES-128, ta sử dụng AES-256.

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

Hệ thống bảo mật với mục đích là bảo vệ tính bí mật, tính toàn vẹn của dữ liệu đồng nghĩa với việc bảo vệ quyền sở hữu tài sản trí tuệ cũng như bảo đảm sự an toàn của hệ thống. Để đáp ứng yêu cầu về bảo mật, các nhà thiết kế cần phải thêm một số chức năng đặc biệt vào hệ thống. Tuy nhiên, việc thực hiện bảo mật này trong đa số trường hợp phải đánh đổi với việc giảm hiệu năng, tăng tài nguyên và tăng chi phí của hệ thống. Trong phần này luận án trình bày một phương pháp nâng cao hiệu năng của hệ thống nhúng cấu hình lại được từng phần dựa trên FPGA. Hệ thống được miêu tả ở đây có khả năng cập

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 74)

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

(120 trang)