Các nghiên cứu Mã hóa Xác thực Nén Giao thức cập nhật từ xa Trao đổi khóa Cấu hình từng phần Hệ thống nhúng [23] x x x [30] x x x [41] x x x [90][91] x [93][94] x x [95] x x Framework của luận án này x x x x x x x 2.5 Kết luận chƣơng
Qua chương này, luận án đã thực hiện hai cơng việc chính, đó là:
- Đề xuất và xây dựng một framework cho việc bảo mật bitstream của các hệ thống nhúng cấu hình lại được từng phần dựa trên FPGA khi cập nhật từ xa qua mạng Internet. Framework của luận án là một framework đầy đủ, hoàn chỉnh và linh hoạt dành cho các nhà thiết kế hệ thống cũng như người d ng khi thực hiện các giải pháp bảo mật cho hệ thống của mình, xem Bảng 2.4.
- Một phần quan trọng trong framework là giao thức truyền thơng an tồn và các cơ chế đảm bảo an toàn cập nhật bitstream. Luận án đã đề xuất và xây dựng một bộ giao thức với các tình huống cập nhật bitstream, trao đổi khóa khác nhau. Giao thức của luận án này với các tham số đáp ứng cho việc cập nhật an tồn hệ thống nhúng cấu hình lại được từng phần mà một số nghiên cứu trước đây chưa đề cập đến, xem Bảng 2.3. Hệ thống mẫu thử nghiệm và kết quả thực nghiệm trong Chương 4 đã chứng minh sự đúng đắn của framework và giao thức mà luận án này đã đề xuất.
57
CHƢƠNG 3
NÂNG CAO HIỆU NĂNG VÀ TÍNH LINH HOẠT TRONG BẢO MẬT BITSTREAM CỦA HỆ THỐNG CẤU HÌNH LẠI ĐƢỢC TỪNG PHẦN DỰA TRÊN FPGA
Giới thiệu: Như đã biết, việc bổ sung tính năng bảo mật vào hệ thống là một sự thỏa hiệp
để thỏa mãn các tiêu chí thiết kế bao gồm: tài nguyên, hiệu năng và giá thành của hệ thống. Trên cơ sở Framework đã trình bày ở Chương 2, chương này tác giả xem xét đến việc sử dụng tối ưu tài nguyên của hệ thống bằng cách đề xuất giải pháp xây dựng các bộ giải mã và xác thực trong khu vực cấu hình lại được từng phần. Các mã hóa này có thể được giải phóng khỏi khu vực cấu hình lại khi nó khơng được sử dụng đến và thay thế vào đó bằng một ứng dụng hữu ích khác. Ngồi ra, để giảm dung lượng bộ nhớ khi lưu trữ bitstream, tác giả sử dụng giải pháp nén bitstream. Và để cải thiện hiệu năng của hệ thống, tác giả sử dụng bus tốc độ cao AXI với các bộ FIFO được hỗ trợ trong các FPGA hiện đại. Các kết quả thực nghiệm và các phân tích cho thấy rằng các giải pháp đã đề xuất sẽ giảm đáng kể chi phí tài nguyên, tăng tính linh hoạt khi thực hiện mà vẫn đảm bảo tính bảo mật, tính an tồn của hệ thống.
3.1 Hệ thống cấu hình lại đƣợc từng phần
Cấu hình lại được từng phần là khả năng thay đổi một cách linh hoạt các khối logic phần cứng bằng cách cấu hình lại các phân v ng tương ứng trên thiết bị bằng các tập tin bitstream từng phần. Cơng nghệ cấu hình lại được từng phần của Xilinx cho phép các nhà thiết kế thay đổi các chức năng của hệ thống khi đang chạy, loại bỏ sự cần thiết phải cấu hình lại tồn bộ hệ thống và tái thiết lập các liên kết, tăng cường đáng kể hiệu năng của hệ thống dựa trên FPGA. Việc sử dụng cấu hình lại được từng phần có thể cho phép các nhà thiết kế di chuyển các hệ thống đến các thiết bị nhỏ hơn, giảm năng lượng tiêu thụ và cải thiện khả năng nâng cấp hệ thống. Cấu hình lại được từng phần giúp sử dụng tài nguyên phần cứng hiệu quả hơn bằng cách chỉ thực hiện các chức năng cần thiết khi cần và giải phóng nó khơng cịn d ng đến nữa.
Với cơng nghệ cấu hình lại được từng phần, phần cứng của FPGA được thiết kế gần giống như thiết kế phần mềm. Có nghĩa là, nó có thể được thiết kế thành từng mơ-đun cấu hình lại được RM (Reconfigurable Module), và sau đó tổng hợp vào hệ thống. Như được trình bày trong Hình 3.1, hệ thống cấu hình lại được từng phần dựa trên FPGA bao gồm
58 phần logic tĩnh và ba phân v ng cấu hình lại được RP (Reconfigurable Partition). Ứng với các phân vùng RP#1, RP#2, RP#3, ta có thể xây dựng thành tập các mô-đun từng phần
RM1, RM1,RM3 tương ứng. Ví dụ, với tập mơ-đun RM1 ta có các mơ-đun chức năng IP Core1, IP Core2, IP Core3, và các mơ-đun chức năng này có thể được cấu hình vào RP#1
khi hệ thống vẫn đang hoạt động bình thường.
Hình 3.1 Ví dụ về một hệ thống cấu hình lại được từng phần
Cấu hình lại từng phần cho phép các bộ phận quan trọng của hệ thống vẫn tiếp tục hoạt động trong khi một bộ điều khiển trên FPGA hoặc bên ngồi nó tải một thiết kế từng phần vào trong một mơ đun cấu hình lại được. Cấu hình lại từng phần cũng có thể được sử dụng để tiết kiệm không gian lưu trữ bằng cách chỉ lưu trữ những thành phần mà có sự thay đổi giữa các thiết kế.
Một ví dụ về tính hữu ích của hệ thống có thể cấu hình lại được từng phần là trường hợp của một thiết bị truyền thơng. Nếu thiết bị này đang kiểm sốt nhiều kết nối, một trong số các kết nối đó yêu cầu thay đổi bộ mã hóa, nó sẽ tự động cập nhật lại lõi mã hóa này mà khơng cần phải dừng mọi hoạt động của thiết bị.
Có hai kiểu cấu hình lại từng phần của các thiết bị FPGA, đó là cấu hình lại dựa trên mơ-đun và cấu hình lại dựa trên sự khác biệt.
Cấu hình lại từng phần dựa trên mơ-đun cho phép cấu hình lại các mơ-đun riêng
biệt của thiết kế. Để đảm bảo truyền thơng xun qua ranh giới các mơ-đun cấu hình lại, các macro bus đặc biệt đã được sắp xếp trước. Nó hoạt động như một cầu nối định tuyến cố định kết nối các mơ-đun cấu hình lại với phần cịn lại của thiết kế. Cấu hình lại từng phần dựa trên mơ-đun địi hỏi phải thực hiện một tập hợp các hướng dẫn cụ thể trong giai đoạn đặc tả kỹ thuật thiết kế. Cuối c ng với mỗi mơ-đun cấu hình lại của thiết kế, bitstream từng phần được tạo ra. Đó là bitstream được sử dụng để thực hiện cấu hình lại từng phần của một FPGA.
59
Cấu hình lại từng phần dựa trên sự khác biệt có thể được sử dụng khi có một thay
đổi nhỏ được thực hiện trong thiết kế. Nó đặc biệt hữu ích trong trường hợp thay đổi các LUT hoặc nội dung các khối bộ nhớ chuyên dụng. Bitstream từng phần chỉ chứa thông tin về sự khác biệt giữa cấu trúc thiết kế hiện tại (nằm trong FPGA) và nội dung mới của FPGA.
Từ các chức năng của thiết kế, cấu hình lại từng phần có thể được chia thành hai nhóm: Cấu hình lại từng phần tĩnh và cấu hình lại từng phần động.
Cấu hình lại từng phần động, nó cho phép thay đổi từng phần của hệ thống trong khi
phần cịn lại vẫn đang hoạt động bình thường.
Cấu hình lại từng phần tĩnh, là quá trình cấu hình lại một phần của hệ thống và các
phần còn lại phải ngừng hoạt động. Hệ thống sẽ hoạt động trở lại sau khi phần cấu hình lại đã hồn thành.
Cấu hình lại từng phần tĩnh là trường hợp đặc biệt của cấu hình từng phần động. Vì vậy phần tiếp theo luận án này sẽ chỉ trình bày phần cấu hình lại được từng phần động.
3.1.1. Cấu hình lại từng phần động
Trong phần này chúng ta sẽ thảo luận chi tiết hơn về cấu hình lại từng phần động DPR (Dynamic Partial Reconfiguration). Mặc d là rất khó khăn để thực hiện DPR nhưng có rất nhiều lợi thế nổi bật ở trong đó. Chúng ta hãy xem xét các thành phần bên trong của hệ thống cấu hình lại được trong các mục sau.
3.1.1.1. Phần động - Dynamic Part
Phần động (mô-đun động) là thành phần chức năng không cần thiết phải hoạt động trong suốt thời gian hoạt động của hệ thống và có thể được phát triển hoặc nâng cấp một cách độc lập với thiết lập ban đầu (phần tĩnh). Các mô-đun động này chia sẻ các khu vực chung bên trong FPGA (xem Hình 3.1), điều này dựa trên giả định rằng chúng không cần thiết chạy song song c ng một lúc. Chúng được nạp vào hoặc gỡ bỏ khỏi FPGA theo yêu cầu của hệ thống, và chúng thường được lưu trữ ở dạng bitstream từng phần trong một bộ nhớ bên ngoài FPGA. Trong một số trường hợp, chúng cũng có thể được lưu trữ trong bộ nhớ có sẵn bên trong FPGA.
3.1.1.2. Phần tĩnh - Static Part
Phần tĩnh là một phần của thiết kế đầu vào và nó hoạt động trong suốt thời gian chạy ứng dụng. Nó được đặt trong khu vực "tĩnh" của một FPGA và được giữ nguyên vẹn trong suốt vòng đời hệ thống. Ngồi chức năng tiêu chuẩn của nó, nó cịn cung cấp một cơ sở hạ
60 tầng để tải và gỡ bỏ các mô-đun của thiết kế, đó là hệ thống lập lịch, quản lý dữ liệu, và quản lý giao diện.
Phần tĩnh bao gồm bộ điều khiển và logic cấu hình cần thiết cho việc quản lý dữ liệu và giao diện. Tất cả các đầu vào / đầu ra của các ứng dụng được quản lý bởi phần tĩnh, giao tiếp với các mô-đun động thông qua một giao diện cố định.
3.1.1.3. Macro bus – Bus Macro
Macro bus được sử dụng như các đường dẫn dữ liệu cố định cho các tín hiệu đi qua giữa một mơ-đun cấu hình lại và thành phần khác. Các thiết kế phải đảm bảo rằng bất kỳ tín hiệu nào của mơ-đun cấu hình lại được giao tiếp với một thành phần khác chỉ bằng cách thông qua một macro bus.
Macro bus là một phần trung tâm của một thiết kế cấu hình lại. Nó chuyển tải lệnh và dữ liệu vào và ra của các mơ-đun cấu hình lại và nó là đường duy nhất để các mơ-đun cấu hình lại tiếp cận với thế giới bên ngồi.
Có một số yêu cầu đối với truyền thông khi xây dựng macro bus:
Băng thông cao: Ý tưởng đằng sau một giải pháp hỗ trợ phần cứng là sử dụng tốc độ
tính tốn cao của FPGA. Điều này chỉ có thể xảy ra nếu dữ liệu được cung cấp ở tốc độ cao. Một từ của dữ liệu sẽ có thể đi qua trong mỗi chu kỳ đồng hồ của bus.
Đơn giản: Macro bus phải đơn giản để dễ dàng sử dụng và giảm độ phức tạp của hệ
thống.
Khả năng tương thích: Bằng cách d ng một giao thức đã biết trong macro bus để
đơn giản hóa và giảm nguy cơ sai sót.
3.1.1.4. Bộ điều khiển cấu hình – Configuration Controller
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 tồ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 tồ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ó 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.2 Sơ đồ 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