Giao thức trao đổi khóa

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

S an toàn c a d u trong m t mã hiự ủ ữliệ ậ ện đại ph thu c vào hai khía c nh: S c m nh ụ ộ ạ ứ ạ

c a thu t toán mã hóa và khóa b o m t. S c m nh c a thuủ ậ ả ậ ứ ạ ủ ật toán mã hóa được th hiể ện ở độ ph c t p trong tính toán c a thuứ ạ ủ ật toán đó nhằm mục đính ngăn ngừa các cu c t n phân ộ ấ

tích mã. Khóa b o mả ật dùng để mã hóa và gi i mã d ả ữliệu. Khóa càng dài thì độ an toàn

trước các cu c t n công th tu n t càng cao. ộ ấ ử ầ ự

Trong th c t , các thuự ế ật toán mã hóa thường đã được tiêu chu n hóa và công b công ẩ ố

khai. Khóa là thành ph n quan tr ng duy nh t còn l i c a quy trình b o m t c n phầ ọ ấ ạ ủ ả ậ ầ ải được giữ bí mật. Tuy nhiên, để đả m b o tính kh d ng c a d li u thì khóa c n phả ả ụ ủ ữ ệ ầ ải được chia s ẻ và trao đổi gi a hai phía mã hóa và gi i mã. S ia sữ ả ựch ẻ và trao đổi này dẫn đến các nguy cơ

làm sai l ch ho c ti t l khóa ra bên ngoài. ệ ặ ế ộ

Để ả gi i quy t vế ấn đề này, người ta có th thi t lể ế ập kênh riêng an toàn để trao đổi khóa

nhưng chi phí sẽ cao và c n các thi t b t ti n kèm theo. Hoầ ế ị đắ ề ặc người ta s d ng m ng ử ụ ạ

công cộng, ví như mạng Internet ch ng h n, v i gi i pháp xác th c an toàn [ ]ẳ ạ ớ ả ự 89 . Xu hướng công ngh hiệ ện đại ứng d ng cho các giao dụ ịch thương mại là trao đổi khóa qua môi trường m ng công cạ ộng không đáng tin cậy này. Vì v y, c n ph i có các giậ ầ ả ải pháp an toàn để ả b o v khóa trong các phiên giao d ch. Giệ ị ải pháp đầu tiên trong lĩnh vực này là giao th c trao ứ đổi khóa Diffie-Hellman được công b bố ởi Whitfield Diffie và Martin Hellman vào năm

1976 [ ]90 . Trao đổi khóa Diffie-Hellman là một phương pháp trao đổi khóa được phát minh s m nh t trong m t mã h c hi n ớ ấ ậ ọ ệ đại. Phương pháp trao đổi khóa này cho phép hai bên thi t l p m t khóa bí mế ậ ộ ật chung để mã hóa d u s d ng trên kênh truy n không an ữliệ ử ụ ề

toàn mà không c n có s ầ ự thỏa thuận trước v khóa bí m t. Khóa bí m t t o ra s ề ậ ậ ạ ẽ được s ử

dụng để mã hóa d u vữliệ ới phương pháp mã hóa khóa đố ứi x ng.

Santosh Deshpande đề xu t m t giao thấ ộ ức để trao đổi khóa an toàn [ ]. Cách ti91 ếp c n ậ

c a Santosh Deshpande h ủ ỗ trợ ngăn ch n t n công t ch i d ch v ặ ấ ừ ố ị ụ (DoS ), nhưng sự tươi

m i và tính liên t c c a m t phiên giao dớ ụ ủ ộ ịch chưa được xem xét. Saar Drimer trình bày một giao th c c p nh t t xa an toàn c a h ứ ậ ậ ừ ủ ệ thống d a trên FPGA [ ]. Trong công vi c cự 31 ệ ủa

mình, ông đã sử ụ d ng khóa KUL tính để toán MAC và mã hóa d ữ liệu, nhưng ông không

trình bày làm th ế nào để trao đổi an toàn khóa này.

Trên cơ sở nh ng xem xét trên, vữ ở ới bài toán trao đổi khóa gi a các ch th tham gia ữ ủ ể

thi t k , phát tri n và s d ng m t h ế ế ể ử ụ ộ ệ thống nhúng c u hình lấ ại đượ ừc t ng ph n, lu n án ầ ậ

này trình bày m t giao th c k t h p thu t toán mã hóa bộ ứ ế ợ ậ ất đố ứng và hàm băm để ựi x th c hi n linh hoệ ạt nhưng vẫn đảm bảo tính an toàn cao khi trao đổi khóa bí m t qua m ng ậ ạ

Internet. Trong giao th c cứ ủa luận án này, các tham s ố đểthực hi n an toàn c a m t h ệ ủ ộ ệ

thống nhúng c u hình lấ ại được m t phộ ần được định nghĩa và bổ sung. Giao thức đã đề xuất tham chi u m t cách c n tr ng t b giao thế ộ ẩ ọ ừ ộ ức IKE (Internet Key Exchange) được trình

55 bày trong [ ]. V92 ấn đề trao đổi khóa được th c hi n qua hai hình thự ệ ức khác nhau, đó là: trao đổi khóa qua trung tâm xác thực khóa và trao đổi khóa gi a hai bên không qua trung ữ

tâm xác thực.

2.3.1. Giao thức trao đổi khóa qua trung tâm xác th c ự

Đây là mức độ an toàn rất cao trong trao đổi khóa. Khóa của các bên luôn luôn được chứng thực bởi trung tâm xác thực trước khi thực hiện giao dịch dữ liệu. Chi tiết được mô tả trong Hình 2.3 và các bước tiến hành như sau:

Hình 2.3 Giao thức trao đổi khóa được xác thực bởi TAut

- Bắt đầu phiên giao d ch, SysInt t o ra s ị ạ ố chỉ ử ụ s d ng m t l n ộ ầ NSuM, và gửi NSuM, SID,

VIDvà "ReqIP" đến IPVend.

- IPVend nh n và xác minh các tham s . N u các tham s là phù hậ ố ế ố ợp, IPVend s g i ẽ ử

khóa công khai PKV n SysInt. đế

- SysInt nh n và gậ ửi PKV cùng v i s nh danh c a IPVend ớ ố đị ủ VIDđến TAut để xác minh. TAut s ki m tra, xác minh r i g i b n tin thông báo "Confirmẽ ể ồ ử ả PKV" đến cho SysInt. N u b n tin thông báo "Confirmế ả PKV" cho k t qu ế ả đúng thì SysInt sẽ ử ụ s d ng khóa này

để mã hóa SKS, và g i cho IPVend. ử

- IPVend nh n và gậ ửi SKS mã hóa cùng v i s nh danh c a SysInt ớ ố đị ủ SIDđến TAut để xác minh.

- TAut xác minh khóa SKS c a SysInt và g i m t b n tin thông báo "Confirmủ ử ộ ả SKS" đến IPVend.

- N u b n tin thông báo "Confirmế ả SKS" cho k t qu ế ả đúng. Có nghĩa là SKS là chính xác c a SysInt. IPVend s d ng khóa riêng ủ ử ụ SKV đểgiải mã SKSđã được mã hóa, và sau đó

s d ng khóa ử ụ SKSnày để mã hóa lõi IP r i g i cho SysInt. ồ ử

Tại mỗi phiên giao dịch, cả hai khóa PKV và SKSluôn được trao đổi và xác thực qua

TAut. Riêng khóa riêng SKVlà không trao đổi. Khóa công khai PKVkhông cần phải giữ bí mật nên khi trao đổi qua mạng không cần thiết phải được mã hóa. Chỉ khóa bí mật SKScần phải được bảo mật và nó đã được mã hóa bởi khóa PKVtrước khi gửi qua Internet. Giao thức trao đổi khóa an toàn được mô tả chi tiết hơn trong các thuật toán sau.

56

2.3.1.1. Thuật toán 3 Thuật toán bên phía nhà thiết kế hệ thống-

S1. Generate(NSuM) S2. M0= HMAC(“ReqIP”, SID, VID, NSuM) S3. Send(“ReqIP”, SID, VID, NSuM, M0) S4. Receive(“ReqSKS”, PKV, M1) S5. M1‟ = HMAC(“ReqSKS”, PKV, M0) S6. If M1‟ ≠ M1 then goto 1 S S7. M2= HMAC(“VerifyPKV”, SID, VID, TAID, PKV, M1) S8. Send(“VerifyPKV”, SID, VID, TAID, PKV, M1, M2) S9. Receive(“ConfirmPKV”, M3) S10. M3‟ = HMAC(“ConfirmPKV”, M2)

S11. If (“ConfirmPKV” ≠ PKV_OK) or M3‟ ≠ M3 then goto S1

S12. M4 = HMAC(EncryptedSKS, M1) S13. Send(EncryptedSKS, M4)

S14. Receive(EncryptedIP, M7)

2.3.1.2. Thuật toán 4 – Thuật toán bên phía nhà cung cấp IP

V1. Receive(“ReqIP”, SID, VID, NSuM, M0) V2. M0‟ = HMAC(“ReqIP”, SID, VID, NSuM) V3. If M0‟ ≠ M0 then goto V1 V4. M1= HMAC(“ReqSKS”, PKV, M0) V5. Send(“ReqSKS”, PKV, M1) V6. Receive(EncryptedSKS, M4) V7. M4‟ = HMAC(EncryptedSKS, M1) V8. If M4‟ ≠ M4 then goto V1 V9. M5= HMAC(“VerifySKS”, EncryptedSKS, M4) V10. Send(“VerifySKS”, EncryptedSKS, SID, VID, TAID, PKV, M4, M5) V11. Receive(“ConfirmSKS”, M6) V12. M6‟ = HMAC(“ConfirmSKS”, M5)

V13. If (“ConfirmSKS” ≠ SKS_OK) or M6‟ ≠ M6 then goto V1

V14. M7 = HMAC(EncryptedIP, M6) V15. Send(EncryptedIP, M7)

2.3.1.3. Thuật toán 5 – Thuật toán bên phía trung tâm xác thực

T1. Receive(“VerifyPKV”, SID, VID, TAID, PKV, M1, M2) T2. M2‟ = HMAC(“VerifyPKV”, SID, VID, TAID, PKV, M1) T3. If M2‟ ≠ M2 then goto T1

57 T4. M3= HMAC(“ConfirmPKV”, M2) T5. Send(“ConfirmPKV”, M3) T6. Receive(“VerifySKS”, EncryptSKS, SID, VID, TAID, PKV, M4, M5) T7. M5‟ = HMAC(“VerifySKS”, EncryptedSKS, M4) T8. If M5‟ ≠ M5 then goto T1 T9. M6= HMAC(“ConfirmSKS”, M5) T10. Send(“ConfirmSKS”, M6)

2.3.2. Giao thức trao đổi khóa qua không qua trung tâm xác th c ự

Khi các bên có th ể tin tưởng lẫn nhau, trao đổi khóa có th không c n ph i qua trung ể ầ ả

tâm xác thực. Tuy nhiên, để phòng ng a rừ ủi ro, khóa đố ứng theo phiên (sau đây gọi x i là

khóa phiên) được đề xu t s d ng. Khóa phiên là mấ ử ụ ột khóa đố ứi x ng có th ể được s d ng ử ụ

cho từng trao đổi khác nhau giữa các đối tác. Khóa đượ ạc t o ra cho m i phiên giao dỗ ịch để

loạ ỏi b các yêu c u v bầ ề ảo trì và lưu trữ. M i mỗ ột khoá được s d ng m t l n v i m t b n ử ụ ộ ầ ớ ộ ả

tin duy nh t. ấ

Hình 2.4 Giao thức trao đổi khóa không qua trung tâm xác thực

Các thu t toán c a viậ ủ ệc trao đổi khóa an toàn gi a SysInt và IPVend, Hình 2.4a, hoữ ặc giữa SysInt và User, Hình 2.4b, được mô t ả như dưới đây. Trong đó, khóa phiên SSKSđược t o ra b i SysInt. SysInt s d ng ạ ở ử ụ PKV mã hóa khóa phiên này và g i cho IPVend. để ử

2.3.2.1. Thuật toán 6: Thuật toán bên phía nhà tích hợp hệ thống

S1. Generate(NSuM, SSKS) S2. M0= HMAC(“ReqIP”, SID, VID, NSuM) S3. Send(“ReqIP”, SID, VID, NSuM, M0) S4. Receive(“ReqSSKS”, PKV, M1) S5. M1‟ = HMAC(“ReqSSKS”, PKV, M0) S6. If M1‟ ≠ M1 then goto 1 S S7. M2 = HMAC(EncryptedSSKS, M1) S8. Send(EncryptedSSKS, M2) S9. Receive(EncryptedIP, M3)

58

2.3.2.2. Thuật toán 7: Thuật toán bên phía nhà cung cấp IP

V1. Receive(“ReqIP”, SID, VID, NSuM, M0) V2. M0‟ = HMAC(“ReqIP”, SID, VID, NSuM) V3. If M0‟ ≠ M0 then goto V1 V4. M1= HMAC(“ReqSSKS”, PKV, M0) V5. Send(“ReqSSKS”, PKV, M1) V6. Receive(EncryptedSSKS, M2) V7. M2‟ = HMAC(EncryptedSSKS, M1) V8. If M2‟ ≠ M2 then goto V1 V9. M3 = HMAC(EncryptedIP, M2) V10. Send(EncryptedIP, M3)

2.3.2.3. Thuật toán 8: Thuật toán bên phía nhà cung cấp dịch vụ

S1. Generate(NSuM, SSKS) S2. M0= HMAC(“GetUpdate”, SID, UID, NSuM) S3. Send(“GetUpdate”, SID, UID, NSuM, M0) S4. Receive(“ReqSSKS”, PKU, M1) S5. M1‟ = HMAC(“ReqSSKS”, PKU, M0) S6. If M1‟ ≠ M1 then goto 1 S S7. M2 = HMAC(EncryptedSSKS, M1) S8. Send(EncryptedSSKS, EncryptedIP, M2)

2.3.2.4. Thuật toán 9: Thuật toán bên phía người dùng

U1. Receive(“GetUpdate”, SID, UID, NSuM, M0) U2. M0‟ = HMAC(“GetUpdate”, UID, UID, NSuM) U3. If M0‟ ≠ M0 then goto U1

U4. M1= HMAC(“ReqSSKS”, PKU, M0) U5. Send(“ReqSSKS”, PKU, M1)

U6. Receive(EncryptedSSKS, M2)

U7. M2‟ = HMAC(EncryptedSSKS, EncryptedIP, M1) U8. If M2‟ ≠ M2 then goto U1

U9. Receive (EncryptedIP)

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

Độ an toàn và tính bảo mật của các tham số NSuM, độ dài khóa và các thuật toán mã hóa tương tự như đã phân tích ở phần trên 2.2.3. Phần này phân tích tiếp một số bổ sung trong giao thức trao đổi khóa an toàn.

59

Khóa của các thiết bị cụ thể có thể được tạo ra và quản lý theo nhiều cách khác nhau. Ví dụ, SKScó thể được tạo ra và xác thực bởi TAut, và được lưu trữ trong cơ sở dữ liệu của máy chủ cập nhật. Hoặc khóa phiên SSKScó thể được tính toán từ số định danh F và số chỉ sử dụng một lần NSuM: ( , ) M S K SuM SSK E F N (2.1)

Trong đó khóa KMchỉ được biết đến bởi máy chủ cập nhật. Hoặc theo một cách khác, số định danh F có thể được sử dụng như một khóa công khai thay thế để các máy chủ cập nhật trao đổi an toàn khóa bí mật SKS, SSKSvới các thiết bị đầu cuối.

Thuật toán bất đối xứng RSA được sử dụng để bảo vệ khóa đối xứng. Như đã trình

bày trong Chương 1, việc tìm khóa riêng từ khóa công khai đã biết là rất khó khăn. Nếu số nguyên tố được cho đủ lớn thì năng lực của các máy tính hiện nay không thể lấy được khóa riêng. Hơn nữa, khóa riêng không được trao đổi qua Internet, do đó nguy cơ bị rò rỉ khóa này là ít có thể xảy. Có nghĩa là việc bảo vệ khóa đối xứng khi trao đổi qua mạng Internet bằng thuật toán khóa công khai sẽ là cách thực hiện rất an toàn.

Việc đo lường mức độ bảo mật của RSA đã trình bày trong [12], Kefa Rabah cho thấy rằng phân tích số 129 số (426 bit) vào năm 1994 cần 5.000 năm MIPS (một MIPS có nghĩa -

là triệu lệnh trong một giây, và một năm MIPS là một năm làm việc của máy tính với năng lực thực hiện một triệu lệnh trong một giây). Tương đương với việc sử dụng thời gian nhàn rỗi trên 1.600 máy tính trên toàn thế giới trong thời gian tám tháng. Vì vậy, khi sử dụng thuật toán mã hóa RSA để mã hóa khóa đối xứng, sự hỗ trợ chiều dài khóa từ 512 bit đến 1024 bit là cần thiết. Bên cạnh đó, để bảo vệ các giao dịch giá trị rất cao – khóa ít nhất là 1024 bit hoặc lớn hơn nên được sử dụng.

2.4 Đánh giá và so sánh với các nghiên c u liên quan ứ

Việc c u hình l i t xa b ng cách s d ng b x ấ ạ ừ ằ ử ụ ộ ử lý nhúng đã được đề xu t b i KY ấ ở

Park và Hyuk Kim t Xilinx trong [ ]. Altera mô t làm th nào c p nh t t xa có th ừ 93 ả ế ậ ậ ừ ể được th c hi n cho các FPGA Stratix s d ng m t b x lý lõi mự ệ ử ụ ộ ộ ử ềm trong logic người dùng và m t giao di n logic c ng b ng cách s d ng m t b nh ộ ệ ứ ằ ử ụ ộ ộ ớ không bay hơi, với kh ả năng phục h i l i mồ ạ ột bitstream được lưu trữ trong vùng nh ớ không bay hơi [ ]. Tuy 94

nhiên, các khía c nh an toàn c a b n c p nh t t ạ ủ ả ậ ậ ừ xa không được xem xét.

Saar Drimer [ ] 31 đã đề xuất một giao thức để ngăn ngừa các cuộc tấn công phát ạil

bitstream đã mã hóa và xác thực. Ở trong giao thức của mình Drimer đã đề nghị sử dụng ,

một nonce cho phía máy chủ cập nhật và nonce trong vùng nhớ không bay hơi của FPGA. Tuy nhiên, trong giao thức của Drimer chưa xem xét đến yếu tố cấu hình lại được từng

phần, trao đổi khóa như thế nào và thuật toán mã hóa là cố định không thay đổi linh hoạt được. Badrignans và đồng sự [ ] 78 đề xuất bổ sung logic cấu hình mã hóa cứng để ngăn

60

chặn phát lại bitstream cũ. Họ sử dụng một nonce trong quá trình xác thực, và một cơ chế cảnh báo cho nhà phát triển về sự thất bại trong cập nhật của nó.

Tuy nhiên, các nghiên cứu trên đây vẫn chưa xem xét một cách đầy đủ các khía cạnh của một giải pháp tổng thể cho bài toán bảo mật bitstream trong 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 công cộng với nhiều rủi ro trên đường truyền dẫn. Đó là lý do mà t ác gi ả đã đề xuất framework và xây dựng giao thức cập nhật an toàn như đã trình bày ở trên. Kết quả cụ thể được chỉ ra trong Bảng

2.4 sau.

Bảng 2.4 So sánh các thực hiện trên bitstream và hệ thống

Các nghiên cứu Mã hóa thựcXá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 [31] x x x [19] x x x [30] x x x [90][91] x [93][94] x x [95] x x Framework của luận án 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 là án 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 toà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 toà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 đã chứng minh sự 4

61 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ể

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