Để thực hiện phần tĩnh ới các ràng buộc về giao diện liên kết được phép đi qua vùng v
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.
63
Như thể hiện trong Hình 3.1, 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.
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.1.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.1, 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.1.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à cho hệ thống sử dụng tối ưu tài nguyên và giảm được năng lượng m
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 %)
64
3.1.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 itstream tăng dần theo b
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.
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)
65 [ ],[ ] 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 đầ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.1.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 ày được xây dựng bằng phần n
mềm Visual C++.
66
3.1.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.1.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 CRvà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 t uật toán nén bitstream vào trong hệ thống mang lại nhiều lợi h
í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.2 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 ántrì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
nhật từ xa thông qua Internet hoặc từ các thiết bị lưu trữ bên ngoài như một thẻ nhớ
Compact Flash (CF).
Như đã trình bày trong mục 3.1, thiết kế các bộ giải mã AES-256 và bộ xác thực SHA- 512 trong phần cứng cấu hình lại được từng phần để sử dụng tối ưu tài nguyên hệ thống trong khi vẫn đáp ứng được yêu cầ về bảo mật và hiệu năng thực hiện Sự đóng góp chính u .
của mục này là việc áp dụng hệ thống kiến trúc BUS AXI4 tốc độ cao cho phép đọc ghi
bitstream giữa các khối và xây dựng bộ AXI Master giúp tăng tốc độ thực hiện các thuật toán mật mã và cấu h nh lại hệ thống.ì
68
3.2.1. Xây d ng h ự ệ thống
Để nâng cao hiệu năng của hệ thống, luận án này thiết kế và bố trí các khối chức năng như miêu tả trong Hình 3.3 dưới đây. Trong đó các khối mã hóa và xác thực được thực hiện trong khu vực cấu hình lại được từng phần và giao tiếp với DDRAM thông qua hai FIFO được quản lý bởi khối AXI Master.
Hình 3.3Sơ đồ khối của hệ thống
3.2.1.1. Mô tả hoạt động của hệ thống
Khi nhận được bản tin thông báo cập nhập từ phía máy chủ, Microblaze sẽ thực hiện
các công việc cần thiết cho quá trình thiết lập giao thức truyền nhận và cập nhật an toàn bitstream.
Nhờ khối DMA, luồng dữ liệu sẽ đi trực tiếp từ khối Ethernet đến DDRAM thông qua
hệ thống bus AXI4 tốc độ cao, điều này có ý nghĩa rất lớn trong việc tăng tốc độ hoạt động của hệ thống do giảm được thời gian nhận bistream đồng thời giải phóng cho vi xử lý Microblaze có thể thực hiện các chức năng khác. Lúc này MicroBlaze đóng vai trò của bộ điều khiển và thiết lập các tham số cần thiết trong quá trình truyền nhận dữ liệu.
Khi quá trình nhận bitstream kết thúc, MicroBlaze thiết lập các tham số cần thiết cho các khối SHA-512 và AES-256 bắt đầu hoạt động. Các dữ liệu vào các khối này được lấy từ DDRAM, thực hiện giải mã và xác thực rồi lưu lại vào trong DDRAM dưới sự điều khiển của AXI Master.
MicroBlaze sẽ so sánh mã xác thực được thực hiện bởi SHA 512 và mã xác thực nhận -
được từ máy chủ. Nếu kết quả là như nhau, MicroBlaze sẽ ghi tín hiệu chipSelect cho phép ICAP hoạt động, và quá trình cấu hình lại sẽ bắt đầu.
69
3.2.1.2. Xây dựng các khối chức năng
Bộ xử lý lõi mềm MicroBlaze điều khiển và kiểm soát các khối trong hệ thống và giao tiếp với máy chủ cập nhật thông qua cổng giao tiếp Ethernet.
MicroBlaze [100] là một bộ vi xử lý lõi mềm 32bit loại RISC (Reduced nstructions I S Cet omputer - Máy tính với tập lệnh đơn giản hóa). Kiến trúc bộ vi xử lý bao gồm 32
thanh ghi 32-bit. Vì nó là một bộ xử lý lõi mềm nên các đơn vị chức năng tích hợp vào kiến trúc bộ vi xử lý có thể được tùy chỉnh để phù hợp với mục tiêu ứng dụng. Luận án
này thiết lập MicroBlaze vào hệ thống bằng cách sử dụng công cụ phát triển nhúng của Xilinx EDK (Embedded Development Kit) phiên bản 14.1.
Khối Ethernetnhận và lưu dữ liệu từ máy chủ cập nhật vào DDRAM.
Thành phần chính của khối trao đổi dữ liệu là một lõi IP AXI Ethernet [101], được hỗ trợ bởi Xilinx. Lõi này hoạt động ở ba chế độ 10/100/1000 Mb/s, và cung cấp một giao diện điều khiển các thanh ghi nội bộ bằng cách sử dụng một giao diện AXI4-Lite
32bit. Giao diện AXI4 Lite này hỗ trợ đọc và ghi dữ liệu nhịp đơn. -
Khối AXI-DMAđiều khiển truy nhập bộ nhớ DDRAM một cách trực tiếp.
AXI-DMA [8] là một lõi IP mềm của Xilinx được tích hợp trong các bộ phát triển phần mềm nhúng. Nó cung cấp một sự truy nhập băng thông cao giữa bộ nhớ với các thiết bị ngoại vi sử dụng kiểu Bus AXI4-Stream. AXI-DMA giúp giảm tải các luồng dữ liệu đi qua CPU. Việc thiết lập ban đầu, điều khiển, đọc trạng thái lõi để quản lý được thực hiện dựa vào các thanh ghi qua kiểu bus AXI-Lite phù hợp cho các ứng dụng phát triển dựa trên vi xử lý Microblaze.
Khối SHA-512thực hiện xác thực các tập tin bitstream từng phần.
Khối SHA-512 được xây dựng theo mô hình FSMD [102] với 2 khối con là khối
SHA_512_Contr đóng vai trò là khối điều khiển và khối SHA_512_Func là khối
đường dữ liệu. SHA_512_Contr làm nhiệm vụ xử lý các tín hiệu trạng thái (status signals) nhận được từ khối SHA_512_Func đồng thời điều khiển quá trình giao tiếp với DDRAM qua FIFO.