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 KABnà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)
99 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àỵ 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 Ạ 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óạ Đ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 đó KSmà Alice và Bob nhận được là khóa phiên mớị 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.