- Cơ sở dữ liệu hồ sơ người sử dụng (User Profile Database) lưu trữ thông tin về tất cả người d ng đã đăng ký bao gồm cả số định danh của FPGA, phiên bản của bitstream,
39 kích thước phân v ng cấu hình lại và thuật toán mã hóa. Dựa trên hồ sơ người d ng, các nhà cung cấp dịch vụ có thể gửi thông báo cho người sử dụng bất cứ khi nào có bản cập nhật mới. Một số tham số trong cơ sở hồ sơ người d ng sẽ là các thông tin mức cao (siêu dữ liệu - MetaData) được thêm vào cho mỗi phiên giao dịch bitstream. Siêu dữ liệu là dạng dữ liệu miêu tả về dữ liệu. Trong cơ sở dữ liệu, siêu dữ liệu là các dạng biểu diễn khác nhau của các đối tượng. Siêu dữ liệu trong hệ thống được mô tả trong phần này bao gồm các thông tin về phiên bản, kích thước của bitstream, số định danh của FPGA và tài nguyên được yêu cầu (ví dụ như số lượng của các tế bào logic, Block RAM, v.v.).
- Lưu trữ (Repository): Kho lưu trữ bitstream và các thành phần chức năng được sử dụng để cấu hình lại phần cứng cấu hình lại được thời gian chạy có thể được cài đặt và thực hiện trên vi xử lý nhúng của hệ thống người d ng. Các bitstream được khuyến cáo là lưu trữ ở dạng nén để tiết kiệm băng thông và không gian lưu trữ. Bảng 2.1 cho thấy kích thước của bitstream toàn phần của các FPGA khác nhau. Trong [87], [88] đã chỉ ra rằng t y thuộc vào các thuật toán nén và các thành phần được thiết kế trong FPGA, tỉ lệ nén trung bình có thể đạt được khoảng 50%.
Bảng 2.1 Kích thước bitstream của các thiết bị FPGA
Thiết bị FPGA Kích thước bitstream (Bits)
Spartan-3E XC3S1600E 5,970,480 Atlys Spartan-6 XC6SLX45 11,876,016 Virtex-5 XC5VLX50T 14,053,144 Virtex-6 XC6VLX240T 118,990,200 Artix-7 XC7A200T 65,330,912 Kintex-7 XC7K420T 149,880,032 Virtex-7 XC7VH580T 192,724,384
- Trình quản lý cập nhật của máy chủ (SuM - Server Update Manager): là trình quản lý cập nhật, thuật toán mã hóa và phần mềm. Chức năng của nó bao gồm quản lý dữ liệu người d ng, kho bitstream và phần mềm, thông báo bản cập nhật mới cho người sử dụng, khởi động phiên giao dịch với phía người d ng. T y thuộc vào các giao thức bảo mật được hỗ trợ bởi hệ thống người d ng cuối, SuM có thể lựa chọn một giao thức thích hợp để giao tiếp với người d ng thông qua trình quản lý cập nhật của máy trạm. Sự linh hoạt trong lựa chọn giao thức cho phép các nhà cung cấp dịch vụ hỗ trợ một loạt các khách hàng với các khả năng khác nhau. Do đó framework của luận án này có thể sử dụng một giao thức với các thuật toán mã hóa tiêu chuẩn như trong [42] hay một giao thức với các tham số đặc biệt như trong [41]. SuM hỗ trợ hai chế độ cấu hình lại bitstream từ xa: chế độ on-line và chế độ off-line. Trong chế độ on-line, cấu hình lại được thực hiện trong quá trình truyền nhận bitstream và do đó đòi hỏi không gian lưu trữ tạm thời ít. Trong chế độ
40 off-line, cấu hình lại chỉ bắt đầu khi bitstream đã được tải xong và được lưu trữ trong bộ nhớ của hệ thống người d ng cuối. Do đó ở chế độ off-line đòi hỏi nhiều không gian bộ nhớ hơn.
Các bộ mã hóa, xác thực và nén: chịu trách nhiệm mã hóa, xác thực và nén bitstream. Tương tự như việc lựa chọn giao thức, t y thuộc vào các thuật toán được hỗ trợ bởi hệ thống người d ng cuối, bộ mã hóa, xác thực và nén có thể chọn các thuật toán mật mã và nén thích hợp.
2.1.2. Các thành phần phía ngƣời dùng
Phía người d ng, các thành phần được vẽ trong đường chấm chấm là thành phần t y chọn. Ví dụ, hệ thống có thể có hoặc không có một hệ điều hành (OS), có thể có hoặc không một bộ mã hóa bằng phần cứng. Trong trường hợp không có, một bộ giải mã được xây dựng bằng phần mềm là cần thiết. Các FPGA Virtex của Xilinx có bộ mã hóa được tích hợp sẵn: Virtex-II và Virtex-II Pro hỗ trợ bộ mã hóa Triple-DES với khóa 56-bit, trong khi Virtex-4 đến Virtex-7 hỗ trợ bộ mã hóa AES với khóa 256-bit. Tuy nhiên, các bộ mã hóa này không hỗ trợ cho việc sử dụng cấu hình lại một phần và do đó để thực hiện an toàn cập nhật cho hệ thống này, người sử dụng cần phải xây dựng bộ giải mã trong phần logic cấu hình hoặc trong phần mềm nhúng. Trong framework đã đề xuất, tính linh hoạt trong việc lựa chọn các thuật toán mã hóa luôn được đề cao. Ví dụ, khi việc cập nhật bitstream được thực hiện không thường xuyên thì sự an toàn bistream và việc sử dụng tối ưu các nguồn tài nguyên phần cứng là quan trọng hơn nhiều so với tổng số thời gian cập nhật. Do đó, trong một số trường hợp, luận án này đề nghị sử dụng bộ giải mã, xác thực và giải nén bằng phần mềm để tiết kiệm tài nguyên phần cứng. Hơn nữa, nếu một phần mềm cần thiết không có sẵn hệ thống người d ng cuối, nó có thể được tải về và cài đặt một cách dễ dàng, không như trường hợp các thuật toán được thực hiện bằng phần cứng. Và đặc biệt là các thuật toán mã hóa có thể thay đổi theo thời gian và yêu cầu bảo mật như: Sử dụng một trong các thuật toán DES, 3DES, AES hay sử dụng AES với các độ dài khóa khác nhau: 128, 224, 256bit.
Trình quản lý cập nhật của máy trạm (CuM - Client Update Manager): chịu trách nhiệm quản lý việc tải xuống và cấu hình lại hệ thống. Nó chịu trách nhiệm giao tiếp với các nhà cung cấp dịch vụ và duy trì các thông tin về hồ sơ cá nhân của hệ thống người d ng cuối. Hồ sơ chứa thông tin về số định danh hệ thống/FPGA, phiên bản bitstream, thuật toán giải mã (DES, AES ...), thuật toán xác thực (SHA-1, SHA-2 ...), loại bộ vi xử lý (lõi cứng, mềm-core), thuật toán giải nén và tài nguyên sẵn có. Bảng 2.2 cho thấy một ví dụ về hồ sơ hệ thống của người d ng.
41
Bảng 2.2 Ví dụ về một hồ sơ hệ thống của người dùng
Tên các thành phần Giá trị
System/FPGA ID STB_123456
Bitstream version 1.0
Decryptor Hardware AES-256
Authenticator Software SHA-512
Microprocessor Soft-core MicroBlaze 100 MHz
Data flash 16 MB, used 10MB
FPGA device XC6SLX45
DRAM 128 MB
2.1.3. Truyền thông giữa hệ thống ngƣời dùng và nhà cung cấp dịch vụ
Phần này mô tả các bước truyền thông khác nhau giữa hệ thống người d ng và nhà cung cấp dịch vụ.
1. Khi có bitstream mới, SuM sẽ kiểm tra cơ sở dữ liệu hồ sơ người d ng để tìm các hệ thống người d ng cần phải cập nhật bitstream. Sau đó nó sẽ gửi một thông báo c ng với các siêu dữ liệu của bitstream mới cho tất cả các CuM tương ứng.
2. CuM kiểm tra siêu dữ liệu bitstream và hồ sơ hệ thống để quyết định xem hệ thống là ph hợp để cập nhật hay không. Nếu cập nhật là cần thiết, nó sẽ thông báo cho người sử dụng thông qua giao diện người d ng về việc cập nhật mới. Nếu người d ng muốn cập nhật hệ thống với bitstream mới, họ sẽ phải chọn một chế độ cấu hình lại (chế độ on-line hoặc off-line). CuM có thể vô hiệu hóa t y chọn chế độ off-line nếu không có đủ không gian để lưu trữ bitstream tải về.
3. CuM và SuM đàm phán các giao thức kết nối, các thuật toán mã hóa, xác thực và nén.
4. SuM bắt đầu gửi bitstream nén đã mã hóa đến CuM tương ứng bằng cách sử dụng giao thức đã đàm phán.
5. Nếu ở chế độ cấu hình lại là on-line, CuM sẽ nhận được từng khối dữ liệu, tiếp đó giải mã, giải nén và thực hiện cấu hình lại phần cứng. Nếu ở chế độ off-line, CuM sẽ tải về toàn bộ bitstream và lưu trữ nó trong bộ nhớ. Sau đó nó sẽ bắt đầu giải mã, giải nén và cấu hình phần cứng.
6. Sau khi cấu hình lại đã được thực hiện thành công, CuM sẽ cập nhật hồ sơ cá nhân của hệ thống và gửi một xác nhận đến SuM để cập nhật hồ sơ người d ng trong cơ sở dữ liệu của nhà cung cấp dịch vụ.
42
2.2 Giao thức cập nhập
Giao thức cập nhật xác định một cuộc tương tác trao đổi giữa một trình quản lý cập nhật máy chủ SuM của bên cung cấp dịch vụ, là thực thể phụ trách việc phân phối bitstream mới tới các hệ thống nhúng dựa trên FPGA, và một trình quản lý cập nhật máy khách CuM của phía người sử dụng. Giao thức này là một nâng cấp của các giao thức trình bày trong [41], [23], được áp dụng cho framework như đã được đề xuất ở phần trên, và được thể hiện trong Hình 2.2 c ng với các thuật toán 1 và 2 như trình bày trong phần tiếp theo.
Hình 2.2 Giản đồ của giao thức cập nhật từ xa an toàn
Hình 2.2 mô tả thông tin liên lạc giữa SuM và CuM. Mỗi phiên giao dịch bắt đầu với một bản tin "GetUpdate" ban đầu từ SuM và một bản tin phản hồi "ResUpdate" từ CuM. Trong các bản tin "GetUpdate" và "ResUpdate", hai bên trao đổi các tham số cần thiết cho một phiên cập nhật an toàn, ví dụ như số chỉ d ng một lần "Nonces", số định danh FPGA
F, phiên bản bitstream V, số giấy phép bản quyền NPiLS, v.v. Sau đó, các tham số này được chuyển đổi một cách gián tiếp vào trong các mã xác thực bản tin MAC thông qua việc thực hiện hàm băm SHA. Điều này đảm bảo rằng việc xác thực sự tươi mới của dữ liệu nhận
43 được tiếp theo trong phiên giao dịch chỉ đơn giản là d ng mỗi giá trị MAC mà không cần phải lặp lại các tham số và dữ liệu cũ đã trao đổi trước đó.
Để thực hiện các thuật toán cho giao thức trong phạm vi của framework đã đề ra, chúng ta xem xét một số giả định sau.
2.2.1. Các giả định
Giả định rằng:
- Các hệ thống dựa trên FPGA thường tiếp xúc với môi trường mà ở đó các dạng tấn công mạng, tấn công vật lý nhưng không xâm hại (non-invasive) có thể thực hiện được.
- Chip FPGA được coi là một khu vực đáng tin cậy.
- Các dạng tấn công kênh bên (side channel), xâm hại (invasive) và phân tích năng lượng (power analysis) không thuộc lĩnh vực được xem xét trong luận án này.
- FPGA cần có một số định danh F duy nhất nhưng không nhất thiết cần được bảo mật, được sử dụng cho quá trình xác thực đảm bảo rằng bản tin của FPGA này không thể chuyển đến FPGA khác.
- Các chức năng xác thực bản tin, giải mã và giải nén có thể được xây dựng trong phần cứng hay phần mềm t y theo tài nguyên và mục đích của nhà thiết kế.
2.2.2. Giao thức cập nhật từ xa an toàn
Giao thức cập nhật từ xa an toàn bao gồm hai thuật toán tương ứng với hai phía của một hệ thống: Thuật toán 1 cho phía FPGA (tức là phía người sử dụng) và thuật toán 2 cho phía nhà cung cấp dịch vụ. Đầu tiên, chúng ta tập trung thảo luận về thuật toán 1 ở phía FPGA, đây là thuật toán chạy trên thiết bị với nhiều hạn chế về tài nguyên phần cứng.
Các tham số trong giao thức được lưu trữ trong cơ sở dữ liệu hồ sơ người d ng của nhà cung cấp dịch vụ và bên phía người sử dụng. Các tham số đó là:
SKS: Khóa bảo mật được chia sẻ bởi SuM
F: Số định danh của FPGA
Pi: Số định danh của phân v ng cấu hình lại được trong FPGA
VPi: Số phiên bản của bitstream hiện đang hoạt động
Lmax: Độ dài tối đa của bitstream từng phần của phân v ng Pi
AE: Thuật toán mã hóa được sử dụng
AC: Thuật toán nén được sử dụng
VPiNVM: Số phiên bản bitsream lưu trữ trong bộ nhớ không bay hơi
NCuM: Giá trị bộ đếm lưu trong bộ nhớ không bay hơi của CuM
44
NPiLS: Số bản quyền của bitstream từng phần
VPiU: Số phiên bản của bitstream được tải lên
NSuM: Số Nonce được tạo bởi SuM
Fe, Pe, Ve: Giá trị được mong đợi của F, Pi, VPi
Nmax: Giới hạn trên của NNVM
PB: Bitstream từng phần ở dạng nén
Mx: Các giá trị MACs
2.2.2.1. Thuật toán 1 - Thuật toán bên phía người dùng FPGA
1. Start:
2. Receive(C, Fe, Pi, VPie, LPiU, Nmax, NSuM, M0) 3. if LPiU Lmax then goto 34
4. if C ≠ “GetUpdate” thengoto Start:
5. VPiNVM := VPi
6. ReadNVM(NCuM)
7. M’0 = MAC(C, Fe, Pi, VPie, LPiU, Nmax, NSuM)
8. S := (M0 = M’0) (VPie = VPi) (Fe = F) (NCuM < Nmax) 9. if S then
10. NCuM := NCuM + 1 11. WriteNVM(NCuM) 12. else gotoStart:
13.end if
14.MK:= MAC(F, Pi, VPi, SKS) 15.MLS:= MAC(F, Pi, VPi,NPiLS)
16.M1 := MAC(“ResUpdate”, F, Pi, VPi, Lmax, NCuM, AE, AC, MK, MLS, M0) 17.Send(“ResUpdate”, F, Pi, VPi, Lmax, NCuM, AE, AC, MK, MLS, M1) 18.Receive(C, M2)
19.if M2 ≠ MAC(C, M1) then gotoStart:
20.if C = “Update” then
21. Receive(PB, M3)
22. If M3 ≠ MAC(PB, M2) then gotoStart:
23. Receive(“UpFinish”, VPiU, M4)
24. if M4 ≠ MAC(“UpFinish”, VPiU, M3) then goto Start:
25. Decrypt() 26. Decompress() 27. ReconfCtr() 28. VPiNVM := VPi 29. M5 = MAC(“UpConfirm”, VPiNVM, M4) 30. Send(“UpConfirm”, VPiNVM, M5) 31.end if
32.if C= “Abort” then gotoStart:
33.UpUserprofile(F, Pi, VPi, Lmax, NCuM, AE, AC)
45
Trong đó:
- GetUpdate, Update, UpFinish, Abort là các bản tin được gửi từ máy chủ cập nhật. - ResUpdate, UpConfirm là các bản tin được gửi từ FPGA đến máy chủ cập nhật. - Decrypt(), Decompress(), ReconfCtr() là các hàm giải mã, giải nén và cấu hình lại. - UpUserprofile là chỉ thị lệnh cập nhật hồ sơ người d ng.
Số chỉ d ng một lần NsuM được tạo ra bởi SuM phải là một số ngẫu nhiên không thể đoán trước và cũng không có cơ hội để lặp lại. Điều này ngăn chặn những kẻ tấn công phát lại dữ liệu của các phiên trước đó. Số chỉ d ng một lần NCuM được tạo ra bởi CuM là một bộ đếm đơn điệu được duy trì trong bộ nhớ không bay hơi NVM. Để bảo vệ chống tràn bộ đếm này vượt ra ngoài khả năng lưu trữ của NVM, CuM sẽ thực hiện tăng lên khi nhận được chỉ thị của SuM. Vì lý do này, bản tin khởi tạo "GetUpdate" bao gồm một ràng buộc giới hạn trên NMax. Trong thuật toán 1, giao thức không thể tiến hành tiếp tục đến bản tin phản hồi "ResUpdate" nếu giá trị của NVM không tăng lên 1.
Trao đổi ban đầu đảm bảo rằng cả hai bên đồng ý giá trị của các tham số F, V, P, L, N. CuM sẽ không thể tiếp tục vượt ra ngoài bản tin "ResUpdate" trừ khi các giá trị là ph hợp. Điều này đảm bảo rằng kẻ tấn công không thể tái sử dụng bản tin "GetUpdate" với một FPGA cụ thể để cập nhật một FPGA khác.
Trong giao thức đã đề xuất, các tham số Lmax, LPiU, Pi, VPi là các tham số đặc trưng cho
hệ thống cấu hình lại được từng phần. Một cập nhật an toàn và thành công khi các tham số trên của giao thức phải được thỏa mãn các yêu cầu đặt ra. Cũng trong giao thức này các tham số AE, AC đặt trưng cho việc trao đổi và lựa chọn thuật toán trong một phiên cập nhật. Đây cũng là một điểm mới của giao thức, cho phép lựa chọn linh hoạt các thuật mã hóa và nén bitstream khi cập nhật từ xa qua mạng Internet.
Các tham số của hệ thống, bao gồm cả khóa bí mật được sử dụng như một dữ liệu đầu vào để tạo ra các mã xác thực bản tin MAC. Các giá trị MAC M0, M1, M2, M3, M4, M5 đảm bảo sự tươi mới và liên tục của các giao dịch giữa hai bên trong một phiên. Một kẻ tấn công không thể tạo ra một bản tin bất kỳ chen vào giữa phiên giao dịch của SuM và CuM, bởi vì tất cả các giao dịch của giao thức đều được xác thực. Sau mỗi lần cập nhật thành công, giá trị của các tham số sẽ được cập nhật và lưu trữ trong hồ sơ dữ liệu người d ng để cho các phiên cập nhật mới trong tương lai.
Bây giờ chúng ta thảo luận về các thuật toán của giao thức ở phía nhà cung cấp dịch vụ, thuật toán 2. Bất cứ khi nào có một phiên bản bitsream một phần mới, SuM bắt đầu lấy