GIAO THỨC

In document AN TOÀN VÀ BẢO MẬT THÔNG TIN (Page 100-105)

101 Khi Bob giải mã thì sẽ kiểm tra N mà Bob nhận được xem có trùng khớp với N Bob gửi đi không. Như vậy Trudy không thể replay thông điệp E(P||N, KAB) đượcvì mỗi lần Bob sẽ gửi một số N khác nhau. Tuy nhiên phương pháp này đòi hỏi thêm một bước là Bob phải gửi N trước cho Alice. Vì vậy trong thực tế tùy trường hợp mà người ta sẽ sử dụng một trong 3 kỹ thuật trên cho hợp lý.

6.2 Giao thức bảo mật

Trong thực tế, khi hai người bất kỳ chưa biết trước muốn trao đổi dữ liệu với nhau, họ phải xác định người kia là ai, sau đó thống nhất với nhau là phải dùng phương pháp mã hóa nào, khóa là gì,… Để làm được điều đó họ phải tiến hành thông qua giao thức bảo mật.

Như vậy có thể định nghĩa giao thức bảo mật là các quy định mà nếu hai cá thể tuân theo các quy định đó, thì họ có thể trao đổi dữ liệu với nhau một cách an toàn bảo mật. Một giao thức bảo mật thường nhằm xác định các yếu tố sau:

Định danh hai cá thể trao đổi dữ liệu, chống replay attack.

Trao đổi khóa phiên bí mật để mã hóa dữ liệu. Vì mã đối xứng thực hiện nhanh hơn mã hóa công khai nên ngày nay người ta dùng mã đối xứng để mã hóa dữ liệu, còn việc trao đổi khóa phiên bí mật thì có thể dùng mã hóa đối xứng hay mã hóa khóa công khai.

Trong phần 3.9 hay phần 4.6.2 và 4.7 chúng ta đã xem một số giao thức tập trung vào việc trao đổi khóa phiên. Trong phần này, ta sẽ mở rộng các giao thức trên nhằm định danh cá thể trao đổi dữ liệu và chống replay attack.

6.2.1 Định danh và trao đổi khóa phiên dùng mã hóa đối xứng với KDC Xét lại mô hình phần 3.9 trao đổi khóa phiên

Mô hình trên có thể bị tấn công replay attack. Ví dụ, Trudy có thể replay bước 4 mà B vẫn nghĩ là A gửi và B tiếp tục dùng KAB này làm khóa phiên. Dựa trên cơ sở đó Trudy tiếp tục replay bước 5. (việc replay dữ liệu tại bước 5 sẽ gây ra hậu quả không mong muốn như chúng ta đã đề cập trong chương 1).

Needham and Schroeder đã đề xuất sửa đổi mô hình trên như sau:

1) A  KDC: IDA||IDB||N1

2) KDC  A: E(KS||IDB||N1||E(KS||IDA, KB), KA) // KS là khóa phiên, IDB ể A biết khóa phiên này dùng với B

A B

1. REQUEST to B

KDC

4. E(KAB, KB) 5. E(P, KAB) 2. E(KAB, KA)||E(KAB, KB)

102

3) A giải mã có được KS và E(KS||IDA, KB)

4) A  B: E(KS||IDA, KB) // IDA ể B biết khóa phiên

này dùng với A

5) B  A: E(N2, KS)

6) A  B: E(f(N2), KS) // f là hàm bất kỳ

7) A  B: E(P, KS)

Tại bước 1, A gửi cho KDC nounce N1 và KDC nhúng N1 vào trong bản rõ ở bước 2.

Do đó bước 2 không thể bị replay attack (theo phương pháp challenge/response).

Tại bước 5, B gửi cho A giá trị nounce N2, và chờ A gửi lại giá trị f(N2), f là một hàm được chọn trước. Do đó nếu Trudy replay attack tại bước 4 thì Trudy không thể thực hiện bước 6 vì Trudy không có KS để tính N2 và f(N2). Bob nhận biết Trudy là giả mạo và Trudy không thể replay dữ liệu tiếp tại bước 7.

Như vậy có thể thấy các bước 4, 5, 6 cũng là một hình thức challenge/response để chống replay attack. Để phòng Trudy replay bước 4 để sử dụng lại một KS cũ. Bob challenge tại bước 5 và yêu cầu được response tại bước 6 xem người gửi có biết KS không (chỉ có Alice mới biết KS)

Tuy nhiên giao thức này chưa hoàn toàn chặc chẽ, có một khuyết điểm là nếu sau này Trudy biết được KS và E(KS||IDA, KB) tương ứng thì Trudy có thể replay attack bước 4, sau đó dựa trên KS tính được N2 và phản hồi N2 cho Bob. Như vậy Bob không biết được là Trudy đã mạo danh Alice và tiếp tục dùng khóa phiên KS đã bị lộ này. Do đó giao thức Needham/Schroeder tiếp tục được sửa lại như sau:

1) A  B: IDA ||NA

2) B  KDC: IDB||NB||E(IDA||NA, KB)

3) KDC  A: E(IDB||NA||KS, KA)|| E(IDA|| KS, KB)|| NB

4) A  B: E(IDA||KS, KB)|| E(NB, KS) 5) A  B: E(P, KS)

Trong giao thức trên A gửi NA cho Bob, Bob gửi tiếp cho KDC, KDC nhúng NA vào bản rõ gửi cho A. Do đó nếu A nhận được NA thì có nghĩa là bản mã E(IDB||NA||KS, KA) trong bước 3 không bị replay attack. B gửi NB cho KDC, KDC gửi lại cho A, A gửi lại NB

cho B dưới dạng mã hóa. Đo đó nếu B nhận được NB thì có nghĩa E(IDA||KS, KB) trong bước 4 không bị replay attack. Do đó KS mà Alice và Bob nhận được là khóa phiên mới.

Trudy không thể replay lại các bản mã E(P, KS) cũ trong các lần trước tại bước 5.

6.2.2 Định danh và trao đổi khóa phiên dùng mã hóa khóa công khai Xét lại mô hình phần 4.6.2

A B

1.CA

3.E( E(KS , KRA), KUB) 2.CB

4. E(P, KS)

103 Trong mô hình trên, Trudy có thể replay bước 3 mà B vẫn nghĩ là A gửi và B tiếp tục dùng KSnày làm khóa phiên. Dựa trên cơ sở đó Trudy tiếp tục replay bước 4. Ở đây áp dụng một cơ chế challenge/response khác để chống replay như sau:

Mô tả:

- Bước 1: A gửi chứng chỉ CA cho B.

- Bước 2: B gửi chứng chỉ CB và nounce NBcho A.

- Bước 3: A chọn một tiền khóa phiên S và tính được khóa phiên KS = H(S||NB). A gửi chứng thực và bảo mật S cho B. B cũng tính khóa phiên KS.

- Bước 4: A gửi giá trị hash H(KS) cho B, B kiểm tra giá trị hash này với giá trị hash do B tự tính. Nếu khớp, B biết được rằng bước 3 không thể bị replay attack.

Giả sử Trudy replay bước 3 nhưng không biết S, vậy Trudy không tính được KS tương ứng với NB mới của Bob, từ đó Trudy cũng không thể tính được H(KS). Do đó Trudy không thể replay bước 4 mà không bị Bob phát hiện.

- Bước 5: A và B tiến hành trao đổi dữ liệu.

6.3 Câu hỏi ôn tập

1) Tấn công phát lại thông điệp là gì? Nêu tác hại của thao tác tấn công này và so sánh với việc sửa đổi thông điệp vào mạo danh.

2) Nêu các phương pháp chống lại tấn công phát lại thông điệp.

3) Nêu các mục đích của giao thức.

6.4 Bài tập

Xét giao thức sau:

A A

B 1. IDA

2. CB||NB

3. E(S, KUB) 4. H(KS) 5. E(P||KS) A

A

B 1. CA

2. CB||NB

3. E(E(S, KRA), KUB) 4. H(KS) 5. E(P||KS)

104

a) B có thể chắc chắn A là người ứng với IDA không? Nếu Trudy mạo danh A sử dụng IDA thì B có phát hiện được không? Giải thích

b) Giả sử A có password để định danh với B, B lưu trữ giá trị hash password của A. Hãy sửa giao thức trên để B có thể định danh được A.

105

CHƯƠNG 7. MỘT SỐ ỨNG DỤNG THỰC TIỄN

In document AN TOÀN VÀ BẢO MẬT THÔNG TIN (Page 100-105)