Giao thức Needham-Schroeder

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.

== Giao thức Needham-Schroeder với khóa bí mật ==
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 (formula_1):

1. formula_2
2. formula_3
3. formula_4
4. formula_5
5. formula_6

(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 formula_7 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 formula_8.

(2) Máy chủ tạo ra một khóa phiên formula_1 để 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 formula_8 đượ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.

=== Tấn công ===
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.
=== Ngăn chặn ===
Dùng Tem thời gian (TimeStamp): Xem Giao thức Kerberos

== Giao thức Needham-Schroeder với khóa công khai ==
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:
- K và K, tương ứng với khóa công khai và khóa riêng của A
- K và K, tương tự đối với B
- K và K, tương tự với server S. (Chú ý rằng K dùng để "mã hóa" và K để "giải mã").

Các bước trao đổi:

formula_11
formula_12
formula_13
formula_14
formula_15
formula_16
formula_17

=== Tấn công ===
Cách tấn công với tên gọi man-in-the-middle (người đứng giữa).

formula_18

formula_19

formula_20

formula_21

formula_22

formula_23

=== Ngăn chặn ===
Thay:

formula_16

Bởi:

formula_25

== Xem thêm ==
- Giao thức Kerberos
- Giao thức Otway-Rees
- Giao thức Wide Mouth Frog.