Needham-Schroeder là một giao thức truyền thông phục vụ cho việc xác thực trên các mạng máy tính không an toàn. Giao thức do Roger Needham và Michael Schroeder phát minh vào năm 1978. Nó cho phép các thực thể trao đổi thông tin có thể chứng minh nhận dạng của mình đồng thời chống lại việc nghe lén và phát hiện, ngăn chặn việc truy cập, thay đổi thông tin trên đường truyền thông tin.
Theo cách ký hiệu giao thức mật mã, giao thức Needham-Schroeder với khóa bí mật được mô tả như sau, trong đó, Alice (A) sử dụng máy chủ (S) chứng minh nhận dạng của mình với Bob (B), đồng thời tạo ra một khóa chung ():
(0) Trước khi các giao dịch có thể diễn ra, mỗi người sử dụng trong hệ thống có một khóa bí mật chia sẻ với máy chủ. Ở đây là khóa chung giữa X và máy chủ S.
(1) Khi muốn trao đổi thông tin với Bob, đầu tiên, Alice gửi một gói tin tới máy chủ trong đó có định danh của Alice và Bob cùng với một số được tạo ngẫu nhiên .
(2) Máy chủ tạo ra một khóa phiên để Alice và Bob sử dụng trong giao dịch tiếp theo. Sau đó, máy chủ gửi khóa này cho Alice dưới dạng mật mã hóa bằng khóa chung giữa máy chủ và Alice; đồng thời máy chủ cũng mật mã hóa khóa phiên bằng khóa chung với Bob và gửi cho Alice. Số ngẫu nhiên được gửi kèm cùng gói tin để đảm bảo gói tin là mới (tránh trường hợp kẻ tấn công dùng lại gói tin cũ) và định danh của Bob để Alice biết được người để dùng khóa (trong trường hợp Alice đồng thời giao dịch với nhiều người).
(3) Alice giải mã và gửi phần mã hóa bằng khóa của Bob tới cho Bob. Alice không thể giải mã được phần này và chỉ có Bob mới giải mã được.
(4) Bob giải mã gói tin nhận được và thu được khóa phiên. Bob tạo ra một số ngẫu nhiên khác và gửi cho Alice sau khi mật mã hóa với khóa phiên để chứng tỏ mình đã nhận được khóa.
(5) Alice giải mã, thực hiện một phép toán đơn giản trên giá trị nhận được rồi gửi lại cho Bob để khẳng định giao dịch tiếp tục và Alice là người thực sự có khóa.
Giao thức này không đảm bảo an toàn. Vấn đề là ở gói tin số 3: Bob không thể xác định được đây có phải là gói tin mới được tạo ra hay là gói tin được phát lại. Nếu một người thứ 3 có được một khóa cũ thì có thể thực hiện tấn công bằng cách phát lại gói tin và làm cho Bob tin rằng mình đang trao đổi thông tin với Alice.
Dùng Tem thời gian (TimeStamp): Xem Giao thức Kerberos
Giao thức này sử dụng khóa công khai.
Alice (A) và Bob (B) sử dụng server trung gian (S) lưu trữ khóa công khai của các máy. Gọi:
Các bước trao đổi:
Cách tấn công với tên gọi man-in-the-middle (người đứng giữa).
Thay:
Bởi: