Xem mẫu

CHƢƠNG 6. GIAO THỨC Trong các chương trước, chúng ta đã tìm hiểu về cách thức thực hiện tính bảo mật, tính chứng thực và tính không thoái thác của các phương pháp mã hóa đối xứng và mã hóa khóa công khai. Chương này trước tiên tìm hiểu cơ chế chống lại hình thức tấn công phát lại thông điệp (replay attack). Tiếp theo trình bày về các giao thức bảo mật, là các nguyên tắc áp dụng các kỹ thuật mã hóa nhằm đảm bảo việc truyền dữ liệu là an toàn trước những hình thức tấn công đã được đề cập trong chương một. Chương này trình bày các giao thức dưới dạng nguyên tắc lý thuyết, chương tiếp theo trình bày một số giao thức ứng dụng thực tiễn. 6.1 Phát lại thông điệp (Replay Attack) Trong hình thức tấn công phát lại thông điệp, Trudy chặn thông điệp của Alice gửi cho Bob, và sau đó một thời gian gửi lại thông điệp này cho Bob. Như vậy Bob sẽ nghĩ rằng Alice gửi thông điệp hai lần khác nhau. Tuy nhiên thực sự thì Alice chỉ gửi một lần. Chỉ sử dụng mã hóa đối xứng và mã hóa khóa công khai thì không thể ngăn cản hình thức tấn công này. Để chống lại reply attack có 3 phương pháp: 1) Dùng số định danh: trong mỗi thông điệp gửi cho Bob, Alice nhúng vào đó một con số định danh thông điệp S. Mỗi thông điệp ứng với một S khác nhau. || là phép nối dãy bít Do đó nếu Trudy phát lại thông điệp, Bob biết được hai thông điệp có cùng số định danh và loại bỏ thông điệp thứ hai. Tuy nhiên, phương pháp này có hạn chế là Bob phải lưu trữ số định danh của Alice để có cơ sở so sánh. Do đó phương pháp này thường chỉ sử dụng cho một phiên làm việc (connection oriented). 2) Dùng timestamp: trong mỗi thông điệp gửi cho Bob, Alice nhúng vào một timestamp T xác định thời điểm gửi. Bob chỉ chấp nhận thông điệp nếu nó đến được Bob trong một giới hạn thời gian nào đó kể từ lúc gửi. Tuy nhiên phương pháp này yêu cầu đồng hồ của Alice và của Bob phải đồng bộ, không được sai lệch đáng kể. Ngoài ra độ trễ của việc truyền tin trên mạng cũng là một trở ngại đối với phương pháp này. 3) Dùng cơ chế challenge/response: để bảo đảm thông điệp từ Alice không phải là replay, Bob gửi 1 số ngẫu nhiên N cho Alice (gọi là nounce). Alice sẽ nhúng N trong thông điệp gửi cho Bob. N A C=E(P||N, KAB) B N A C=E(M||N, KUB) B Mã hóa đối xứng Mã hóa khóa công khai 100 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) được vì 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 KDC 1. REQUEST to B 2. E(KAB, KA)||E(KAB, KB) A 4. E(KAB, KB) B 5. E(P, KAB) 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 101 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: 2) B KDC: 3) KDC A: 4) A B: 5) A B: IDA ||NA IDB||NB||E(IDA||NA, KB) E(IDB||NA||KS, KA)|| E(IDA|| KS, KB)|| NB E(IDA||KS, KB)|| E(NB, KS) 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 1.CA 2.CB 3.E( E(KS , KRA), KUB) B 4. E(P, KS) 102 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 KS nà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: 1. CA 2. CB||NB 3. E(E(S, KRA), KUB) A 4. H(KS) B 5. E(P||KS) 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 NB cho 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: 1. IDA 2. CB||NB 3. E(S, KUB) A 4. H(KS) B 5. E(P||KS) 103 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. 104 ... - tailieumienphi.vn
nguon tai.lieu . vn