Giao thức Kerberos

Kerberos là một giao thức mật mã dùng để xác thực trong các mạng máy tính hoạt động trên những đường truyền không an toàn. Giao thức Kerberos có khả năng chống lại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính toàn vẹn của dữ liệu. Mục tiêu khi thiết kế giao thức này là nhằm vào mô hình máy chủ-máy khách ("client-server") và đảm bảo nhận thực cho cả hai chiều.
Giao thức được xây dựng dựa trên mật mã hóa khóa đối xứng và cần đến một bên thứ ba mà cả hai phía tham gia giao dịch tin tưởng.
Lịch sử phát triển.
Học viện kỹ thuật Massachusetts (MIT) phát triển Kerberos để bảo vệ các dịch vụ mạng cung cấp bởi dự án Athena. Tên của giao thức được đặt theo tên của con chó ba đầu Cerberus canh gác cổng địa ngục trong thần thoại Hy Lạp. Giao thức đã được phát triển dưới nhiều phiên bản, trong đó các phiên bản từ 1 đến 3 chỉ dùng trong nội bộ MIT.
Các tác giả chính của phiên bản 4, Steve Miller và Clifford Neuman, đã xuất bản giao thức ra công chúng vào cuối thập niên 1980, mặc dù mục đích chính của họ là chỉ phục vụ cho dự án Athena.
Phiên bản 5, do John Kohl và Clifford Neuman thiết kế, xuất hiện trong tài liệu RFC 1510 vào năm 1993 (được thay thế bởi RFC 4120 vào năm 2005) với mục đích sửa các lỗi của phiên bản 4.
MIT đã cung cấp các phiên bản thực hiện Kerberos miễn phí dưới giấy phép tương tự như dùng cho các sản phẩm BSD.
Chính phủ Hoa Kỳ đã cấm xuất khẩu Kerberos vì nó có sử dụng thuật toán DES 56 bit. Tuy nhiên, trước khi chính sách xuất khẩu của Hoa Kỳ thay đổi (2000), đã có phiên bản KTH-KRB viết tại Thụy Điển thực hiện Kerberos 4 được phân phối rộng rãi bên ngoài Hoa Kỳ. Phiên bản này được dựa trên một phiên bản khác có tên là eBones. eBones lại dựa trên một phiên bản được xuất khẩu của MIT thực hiện Kerberos 4 (patch-level 9) gọi là Bones (loại bỏ các hàm mật mã và các lệnh gọi chúng). Eric Young, một lập trình viên người Australia, đã phục hồi lại các lệnh gọi hàm và sử dụng các hàm mật mã trong thư viện của anh ta. Một phiên bản khác thực hiện Kerberos 5, Heimdal , cũng được thực hiện bởi nhóm đã xuất bản KTH-KRB.
Các hệ điều hành Windows 2000, Windows XP và Windows Server 2003 sử dụng một phiên bản thực hiện Kerberos làm phương pháp mặc định để nhận thực. Những bổ sung của Microsoft vào bộ giao thức Kerberos được đề cập trong tài liệu RFC 3244 ("Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols"). Hệ điều hành Mac OS X cũng sử dụng Kerberos trong các phiên bản máy khách và máy chủ của mình.
Năm 2005, nhóm làm việc IETF về Kerberos cập nhật các đặc điểm kỹ thuật tại địa chỉ . Các cập nhật gần đây bao gồm:
Nguyên tắc hoạt động.
Kerberos được thiết kế dựa trên giao thức Needham-Schroeder. Kerberos sử dụng một bên thứ ba tham gia vào quá trình nhận thực gọi là "trung tâm phân phối khóa" (tiếng Anh: "key distribution center" - KDC). KDC bao gồm hai chức năng: "máy chủ xác thực" ("authentication server" - AS) và "máy chủ cung cấp vé" ("ticket granting server" - TGS). "Vé" trong hệ thống Kerberos chính là các chứng thực chứng minh tính hợp lệ của người sử dụng.
Mỗi người sử dụng (cả máy chủ và máy khách) trong hệ thống chia sẻ một khóa chung với máy chủ Kerberos. Việc sở hữu thông tin về khóa chính là bằng chứng để chứng minh tính hợp lệ của một người sử dụng. Trong mỗi giao dịch giữa hai người sử dụng trong hệ thống, máy chủ Kerberos sẽ tạo ra một khóa phiên dùng cho phiên giao dịch đó.
Ứng dụng của Kerberos.
Các phần mềm sau có thể dùng Kerberos để nhận thực:
Mô tả giao thức.
Theo hệ thống ký hiệu giao thức mật mã, Kerberos được mô tả như sau (trong đó "Alice" ("A") sử dụng "máy chủ" ("S") để nhận thực với "Bob" ("B")):
An ninh của giao thức phụ thuộc rất nhiều vào các trường T (đánh dấu thời điểm) và L (thời hạn) của các gói tin. Đây chính là các chỉ thị về tính chất mới của các gói tin và chống lại các tấn công gửi lại các gói tin cũ (xem thêm: Lô gic BAN).
Trong các bản tin ở trên, máy chủ S bao gồm cả dịch vụ nhận thực và cung cấp vé. Trong gói tin formula_5, formula_6 chính là khóa phiên giữa A và B; formula_7 là vé gửi từ máy khách tới máy chủ; formula_8 là phần để nhận thực A với B; và formula_9 để khẳng định lại nhân dạng của B và thông qua đó chấp nhận A. Điều này cần thiết để hai bên nhận dạng lẫn nhau.
Hoạt động.
Sau đây là mô tả một phiên giao dịch (giản lược) của Kerberos. Trong đó: AS = Máy chủ chứng thực ("authentication server"), TGS = Máy chủ cấp vé ("ticket granting server"), SS = Máy chủ dịch vụ ("service server").
Một cách vắn tắt: người sử dụng chứng thực mình với máy chủ chứng thực AS, sau đó chứng minh với máy chủ cấp vé TGS rằng mình đã được chứng thực để nhận vé, cuối cùng chứng minh với máy chủ dịch vụ SS rằng mình đã được chấp thuận để sử dụng dịch vụ.