.2 Giản đồ của giao thức cập nhật từ xa an toàn

Một phần của tài liệu Bảo mật bitstream FPGA799 (Trang 59 - 68)

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

47

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 , số giấy phép bản quyền V 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 đượ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 Fduy 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

48

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 LPiU: Độ dài bitstream từng phần được tải lên

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 P, i, 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. ifC ≠ “GetUpdate” then goto 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 Sthen

10. NCuM N:= CuM + 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 P, i, VPi, Lmax, NCuM, AE, AC, MK, MLS, M0) 17.Send(“ResUpdate”, F P, i, VPi, Lmax, NCuM, AE, AC, MK, MLS, M1) 18.Receive( ,C M2)

19.if M2≠ MAC(C M, 1) then gotoStart:

20.if C = “Update” then

21. Receive(PB, M3)

22. If M3 ≠ MAC(PB M, 2) 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)

49 31.end if

32.if C= “Abort” then gotoStart:

33.UpUserprofile( ,F Pi, VPi, Lmax, NCuM, AE, AC)

34.Warn(“Resize your partial reconfigurable partition”)

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 tham s ác ốLmax, LPiU, Pi, VPilà c tham s ác ố đặc ng cho trư

h ệthống ấu c hình l ại được ừng t ph . M c ần ột ậpnhật an to và ành công khi c tham s àn th ác ố

trên c giao th ph ủa ức ải được thỏa m c yêu c ãn ác ầu đặt ra. Cũng trong giao th n c ức ày ác tham s ốAE, AC đặttrưng cho vi ệc trao đổi và l ựachọn thu ậttoán trong m phiên c nh . ột ập ật Đây cũng là m iột đ ểm mới c giao thủa ức, cho ph lép ựa ch linh hoọn ạt c thuác ật mã hóa và n b tream khi c nh t xa qua mén its ập ật ừ ạng Internet.

Các tham số của hệ thống, bao gồm ả khóa bí mật được sử dụng như một dữ liệu đầu c

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

50

giá trị của các tham số tương ứng cho bitstream này từ cơ sở dữ liệu hồ sơ người dùng

bằng các lệnh “Get(.)”. Nếu chúng không có, giá trị của các tham số được thiết lập là 0. Sau đó, SuM tạo ra ố ử ụng một ầs s d l n NSuM, tính HMAC M0 và gửi một bản tin "GetUpdate" cùng các tham số cần thiết đến hệ thống FPGA cụ thể. Tùy thuộc vào bản tin trả lời "ResUpdate" nhận được từ FPGA, SuM sẽ quyết định có nên tiếp tục một phiên cập nhật hay không.

2.2.2.2. Thuật toán 2 Thuật toán bên phía máy chủ của nhà cung cấp-

1. Fe := Get(“FPGA/System ID”) or „0‟

2. Pe := Get(“partial partition ID”) or „0‟

3. VPie := Get(“current version”, Fe, Pi) or „0‟

4. SKS:= Get(“update logic key”, Fe, Pi, VPie) or „0‟

5. NPiLS:= Get(“partial bitstream license”, Fe, Pi, VPie) or „0‟

6. Nmax:= Get(“NCuM”, Fe) or „0‟ Hand hake:S

7. Generate(NSuM)

8. M0= MAC(“GetUpdate”, Fe, Pi, VPie, LPiU, Nmax, NSuM) 9. Send(“GetUpdate”, Fe, Pi, VPie, LPiU, Nmax, NSuM, M0)

10.Receive(“ResUpdate”, F P, i, VPi, Lmax, NCuM, AE, AC, MK, MLS, M1)

G Ket ey& icense:L

11.while (SKS = 0) (NPiLS = 0) do

12.Save(Fe, Pi, VPie) 13.if (Fe =0) thenFe := F

14.if (VPie =0) thenVPie := VPi

15. SKS:= Get(“update logic key”, Fe, Pi, VPie) or „0‟

16. NPiLS:= Get(“partial bitstream license”, Fe, Pi, VPie) or „0‟

17. M’K := MAC( ,F Pi, VPi, SKS) 18. M’LS := MAC( ,F Pi, VPi, NPiLS) 19.KEY_Ok := [MK = M’K] 20.LS_Ok := [MLS = M’LS] 21.if ( KEY_Ok) then 22. SKS := 0 23. Restore(Fe, Pi, VPie) 24. goto G Ket ey& icense:L

25.end if

26.if ( LS_Ok) then

27. NPiLS := 0

28. Restore(Fe, Pi, VPie) 29. goto G Ket ey& icense: L

30.end if

31.end while

32.MAC_Ok := [M1 = MAC(“ResUpdate”, F P, i, VPi, Lmax, NCuM, AE, AC, M’K, M’LS,

M0)

33.While MAC_Ok (F ≠ Fe) (Pi ≠ Pe) (VPi ≠ Ve) (NCuM ≥ Nmax) do

34. if MAC_Ok then

51 36. Abort(“FPGA/System ID mismatch”) 37. end if 38. if (Pi ≠ Pe) then 39. Abort(“Partition ID mismatch”) 40. end if 41. if (VPi ≠ Ve) then 42. Warn(“Version mismatch”) 43. Ve V:= Pi 44. end if

45. (if NCuM ≥ Nmax) then

46. Nmax := NCuM + 1 47. end if

48. end if

49.goto Hand hake:S

50.end while U Dp ate: 51.do 52. M2:= MAC(“Update”, M1) 53.Send(“Update”, M2) 54. M3 = MAC(PB M, 2) 55.Send(PB, M3) 56. M4:= MAC(“UpFinish”, VPiU, M3) 57.Send(“UpFinish”, VPiU, M4) 58.Receive(“UpConfirm”, VPiNVM, M5)

59.Up_Ok := [M5= MAC(“UpConfirm”, VPiNVM, M4)] 60.while Up_Ok

61.UpUserprofile( ,F Pi, VPi, NCuM)

2.2.3. Phân tích b o m t ả ậ

2.2.3.1. Tính bí mật và tính xác thực

Trong giao thức đã đề xuất, ở phía FPGA, bộ giải mã và bộ xác thực luôn luôn được thực hiện và có thể thực hiện trong phần cứng hoặc phần mềm nhúng. Do vậy, bitstream một phần được chuyển giao thông qua Internet luôn được mã hóa để chống lại các cuộc tấn

công nhân bản hoặc kỹ thuật giải mã công nghệ. Các bước trong quá trình trao đổi này luôn được xác thực để đảm bảo tính tươi mới, tính toàn vẹn và tính chính gốc của bitstream, nhằm ngăn chặn các cuộc tấn công phát lại.

- Tính xác thực:

Như đã trình bày ở trên, đầu tiên, các tham số trong cơ sở dữ liệu người dùng cùng với số chỉ sử dụng một lần NSuMxác định cho mỗi phiên giao dịch được dùng để tính toán giá trị MAC ban đầu, được gọi là M0. Sau đó M0được sử dụng như một tham số mới để tính toán giá trị MAC tiếp theo, được gọi là M1. Cứ thế, các giá trị MAC lồng vào nhau cho đến khi kết thúc phiên giao dịch. Như vậy, các tham số chỉ đưa vào tính toán MAC một lần nhưng sẽ ảnh hưởng đến toàn bộ các

52

giá trị MAC trong phiên, đảm bảo tính tươi mới và tính liên tục của phiên giao dịch. Việc sử dụng các giá trị MAC trong suốt phiên cập nhật sẽ ngăn chặn hình thức tấn công phát lại bitstream cũ hoặc bitstream với mã độc hại, một trong những dạng tấn công ở giữa (man- -the-middle) [ ]. Trong in 37 giao thức đã đề xuất với hai thuật toán 1 và 2 ở hai phía, luận án này xây dựng và sử dụng hàm băm

SHA-512 để thực hiện tính toán các giá trị MAC này.

Việc sử dụng các giá trị MAC trong giao thức của luận án này nhằm phát hiện và xử lý cả dữ liệu độc hại và dữ liệu lỗi ngẫu nhiên như lỗi tổn thất gói tin trên

đường truyền. Tuy nhiên, nó chỉ đơn giản là hủy bỏ và khởi động lại toàn bộ

phiên giao dịch nếu nó phát hiện một hành vi vi phạm toàn vẹn dữ liệu, chứ không cố gắng để truyền lại các gói tin bị mất. Vì vậy, để đạt được hiệu suất tốt trên các kênh không đáng tin cậy, giao thức đề xuất cần được chạy trên một lớp giao thức sửa lỗi khác như giao thức TCP/IP chẳng hạn.

- Tính bí mật:

Khóa SKS cần phải được sử dụng trong giao thức để mã hóa và giải mã các bitstream, và cũng được dùng như một tham số bí mật để tính toán mã xác thực các bản tin, MK. Khóa là một tham số bí mật, chỉ trao đổi giữa hai bên thông qua một quy trình an toàn riêng biệt, ví dụ như việc trao đổi thông qua một trung tâm đáng tin cậy (TAut), thiết lập một kênh an toàn riêng hoặc thông qua các giao thức trao đổi khóa an toàn.

Trong giao thức, giấy phép bản quyền của bitstream từng phần, NPiLS, cũng được coi như là một khóa bí mật thứ hai và được đưa vào tính toán MAC, làm cho giao thức trở nên an toàn hơn.

Số chỉ sử dụng một lần “nonce”, NSuM, là một con số được tạo ra cho việc sử dụng cụ thể, chẳng hạn như xác thực phiên giao dịch. Thông thường, giá trị của một nonce thay đổi theo thời gian và là một số ngẫu nhiên rất lớn nên việc tái tạo lại nó là vô cùng khó khăn. Nonce là một tham số đặc biệt được sử dụng nhằm hạn chế hoặc ngăn chặn sự tấn công phát lại hoặc tái tạo một tập tin trái phép. Việc bổ sung một nonce từ phía người sử dụng NCuMgiúp cải thiện mức độ an toàn cho cả hai phía trong giao thức cập nhật từ xa.

Các thuật toán bảo mật AES 265 với độ dài khóa 256bit đủ để bảo vệ các dữ liệu -

bí mật và hàm băm SHA 512 với mã xác thực 512bit được coi là an toàn trong -

thời điểm hiện nay. 2.2.3.2. Giá trị của các tham số

NSuMlà số ngẫu nhiên đủ lớn để việc tái hiện lại nó trong thực tế là không thể. Saar Drimer và đồng sự [ ] 31 chỉ ra rằng, việc sử dụng một từ 64-bit cho NSuMsẽ đảm bảo rằng

53

một kẻ tấn công với năng lực thực hiện 103 truy vấn mỗi giây phải mất vài thập kỷ để tìm ra một giá trị trùng lặp.

Giao thức đề xuất sử dụng khóa SKS dài 256-bit cho thuật toán mã hóa AES. Thuật toán AES cho đến nay vẫn được coi là an toàn, có nghĩa là trong hiện tại dữ liệu được mã hóa với thuật toán AES đã không bị phá vỡ. Chiều dài khóa 256 bit của thuật toán AES là -

đủ để bảo vệ thông tin thuộc loại bí mật.

Các giá trị MAC M0, M1, M2, M3,v.v. được tạo ra bởi hàm băm SHA-512 có chiều dài

512-bit. Các giá trị MAC này cung cấp một mức an toàn cao đối với các cuộc tấn công dò tuần tự.

Các tham số khác như Pi, Vi, LMax, v.v. là các tham số phục vụ cho việc cấu hình lại từng phần. Kích thước của chúng phụ thuộc vào các ứng dụng và định nghĩa của người

dùng.

2.2.3.3. Điểm mới của giao thức

Giao th c cứ ủa luận ánnhư đã trình bày ở trên s d ng các thu t toán trong vùng tài ử ụ ậ

nguyên logic c u hình lấ ại được và k t h p v ph n m m nhúng thay vì s d ng logic phế ợ ới ầ ề ử ụ ần c ng c nh thi u tính linh ho t. Cách p c n cứ ố đị ế ạ tiế ậ ủa luận án này có th ể được áp dụng với h u h t các FPGA hi n có. c bi t, n án này xem xét trên các h ầ ế ệ Đặ ệ luậ ệthống nhúng c u hình ấ

lại đượ ừc t ng ph n dầ ựa trên FPGA, đây là các nề ản t ng ph n c ng ầ ứ đang được phát tri n rể ất nhanh trong hi n tệ ại và tương lai. Các điểm m i c a giao thớ ủ ức được th hi n trong B ng ể ệ ả

2.3 sau: Bảng 2.3 So sánh các giao th c c p nhứ ậ ật an toàn Các nghiên c u Mã hóa và xác thc bitstream Ngăn ngừa t n công phát l i Ngăn ngừa t n công xen gi a L a ch n các thut toán mã H trợ ấ c u hình t ng phn H trợ ệ h thng nhúng [31] Có Có Có C nh ố đị Không Không Của luận án này Có Có Có Thay đổi linh ho t ạ Có Có Trong đó:

- Tính linh hoạt trong việc thay đổi các thuật toán mã hóa được thể hiện bởi các trao đổi thông tin lựa chọn thuật toán mã hóa AE và nén AC trước mỗi phiên giao dịch, dòng 17 trong Thuật toán 1 và dòng 10 trong Thuật toán 2.

- Việc hỗ trợ cấu hình lại được từng phần được quyết định bởi các tham số Pi, VPi,

Một phần của tài liệu Bảo mật bitstream FPGA799 (Trang 59 - 68)