Nếu như vậy thì kẻ muốn tần công cũng sẽ rất khó đoán được mật khẩu.- Thay đổi mật khẩu: quy định sau một thời gian nhất định mật khẩu sẽ không còn tác dụng đối với hệ thống và người dùn
Trang 1BAN CƠ YẾU CHÍNH PHỦ
Trang 2MỤC LỤC
MỤC LỤC i
DANH MỤC TỪ VIẾT TẮT iii
DANH MỤC BẢNG BIỂU HÌNH VẼ iv
MỞ ĐẦU vi
CHƯƠNG 1 TỔNG QUAN VỀ CÁC GIAO THỨC XÁC THỰC 1
1.1 Tổng quan về xác thực 1
1.1.1 Định nghĩa 1
1.1.2 Phân loại xác thực 2
1.2 Các phương pháp xác thực 2
1.2.1 Xác thực dựa trên những gì ta biết 3
1.2.2 Xác thực dựa trên những gì ta có 4
1.2.3 Xác thực dựa vào những gì là chính bạn 5
1.3 Các giao thức xác thực 6
1.3.1 Giao thức xác thực đơn giản 6
1.3.2 Giao thức xác thực challenge-response 7
1.3.3 Giao thức xác thực dùng khóa đối xứng 8
1.3.4 Giao thức xác thực khóa công khai 11
1.3.5 Giao thức xác thực kerberos 13
CHƯƠNG 2 GIAO THỨC XÁC THỰC KERBEROS 16
2.1 Tổng quan về giao thức xác thực kerberos 16
2.1.1 Tổng quan 16
2.1.2 Lịch sử phát triển 16
2.2 Một số khái niệm 17
2.2.1 KDC – Key Distribution Center 17
2.2.2 SS, AS, TGS 18
2.2.3 Ticket và Session key 18
2.2.4 Ticket cache 19
2.3 Nguyên lý hoạt động 20
2.3.1 Mô hình tiêu biểu 20
Trang 32.3.3 Nguyên lý hoạt động 21
2.3.4 Phân tích ưu nhược điểm 24
CHƯƠNG 3 XÂY DỰNG MÔ PHỎNG QUÁ TRÌNH XÁC THỰC KERBEROS KHI NGƯỜI DÙNG THUỘC NHIỀU NHÓM 26
3.1 Xác thực người dùng thuộc nhiều nhóm 26
3.1.1 Sự cố về Kerberos Access Token 26
3.1.2 Các dấu hiệu sự cố kích thước Access token 27
3.1.3 Kịch bản Kerberos Token Bloat 28
3.2 Giải pháp khắc phục vấn đề 33
3.2.1 Đặt kích thước tối đa cho bộ đệm token Kerberos 34
3.2.2 Khuyến cáo của Microsoft về tính toán kích thước Token 35
3.3 Triển khai giao thức xác thực kerberos 36
3.3.1 Triển khai Active directory domain service trên Windows Server 2012 36 3.3.2 Join domain trên máy Client với Server 41
3.3.3 Kiểm tra kết nối giao thức 43
3.4 Triển khai xác thực kerberos khi người dùng thuộc nhiều nhóm 45
KẾT LUẬN 48
DANH MỤC TÀI LIỆU THAM KHẢO 49
Trang 4DANH MỤC TỪ VIẾT TẮT
KDC Key Distribution Center
LDAP Lightweight Directory Access Protocol
AS Authentication Server
TGS Ticket Granting Server
SID Security Identifier
LSA Local Security Authority
SAM Security Accounts Manager
Trang 5DANH MỤC BẢNG BIỂU HÌNH VẼ
Hình 3 1 Khắc phục lỗi kerberos 1 33
Hình 3 2 Khắc phục lỗi Kerberos 2 34
Hình 3 3 Check token size report 35
Hình 3 4 Triển khai giao thức kerberos 1 36
Hình 3 5 Triển khai giao thức kerberos 2 36
Hình 3 6 Triển khai giao thức kerberos 3 37
Hình 3 7 Triển khai giao thức kerberos 4 37
Hình 3 8 Triển khai giao thức kerberos 5 38
Hình 3 9 Triển khai giao thức kerberos 6 38
Hình 3 10 Triển khai giao thức kerberos 7 39
Hình 3 11 Triển khai giao thức kerberos 8 39
Hình 3 12 Triển khai giao thức kerberos 9 40
Hình 3 13 Triển khai giao thức kerberos 10 40
Hình 3 14 Triển khai giao thức kerberos 11 41
Hình 3 15 Triển khai giao thức kerberos 12 41
Hình 3 16 Triển khai giao thức kerberos 13 41
Hình 3 17 Triển khai giao thức kerberos 14 42
Hình 3 18 Triển khai giao thức kerberos 15 42
Hình 3 19 Triển khai giao thức kerberos 16 42
Hình 3 20 Triển khai giao thức kerberos 17 43
Hình 3 21 Triển khai giao thức kerberos 18 43
Hình 3 22 Tạo người dùng trên server 44
Hình 3 23 Đăng nhập từ máy client 44
Hình 3 24 Bắt gói tin Kerberos 44
Hình 3 25 Lấy user token 1 45
Hình 3 26 Lấy user token 2 45
Hình 3 27 Kiểm tra đăng nhập với tài khoản 1 46
Hình 3 28 Kiểm tra đăng nhập với tài khoản 2 46
Hình 3 29 Tạo MaxTokenSize 47
Hình 3 30 Cài giá trị cho MaxTokenSize 47
Trang 6Hình 3 31 Đăng nhập thành công sau khi sửa lỗi 47
Do việc áp dụng hệ thống máy tính ngày càng nhiều, thì mọi công việc đều được xử lý trên mạng và thông qua chúng Qua đó các thông tin quan trọng cũng được lưu trữ ngày một nhiều Đây là một trong những thứ đắt giá mà các hacker luôn nhắm tới Cũng chính vì lý do đó mà dấy lên sự lo ngại đến an toàn của máy chủ cho người quản trị hay các nhân viên an toàn khác Để ngăn chặn điều này thì người quản trị cần có những biện pháp hay áp dụng các chính sách thích hợp để đảm bảo hệ thống máy chủ của mình luôn trong tình trạng an toàn
và thông tin sẽ không bị đánh cắp
Trang 7Vì những lý do trên, nhóm đã chọn đề tài “Tìm hiểu và nghiên cứu giao thức Kerberos, xây dựng mô phỏng quá trình xác thực kerberos khi người dùng thuộc về nhiều nhóm”.
CHƯƠNG 1 TỔNG QUAN VỀ CÁC GIAO THỨC XÁC THỰC
1.1 Tổng quan về xác thực
1.1.1 Định nghĩa
Xác thực theo nghĩa thông thường:
Xác thực là một chứng thực một cái gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là những lời khai báo do người đó đưa ra hoặc về vật đó là sự thật Xác thực một đối tượng còn có nghĩa là công nhận nguồn gốc của đối tượng, trong khi xác thực một người thường bao gồm việc thẩm tra nhận dạng
họ Việc xác thực thường phụ thuộc vào một hoặc nhiều nhân tố xác thực
(Authentication factors) để chứng minh cụ thể
Xác thực điện tử
Xác thực trong an ninh máy tính là một quy trình nhằm cố gắng xác minh nhận dạng số (digital iđentity) của phần truyền gửi thông tin (sender) trong giao thông liên lạc chẳng hạn như một yêu câu đăng nhập Phần gửi cần xác thực có thể là một người dùng một máy tính, bản thân một máy tính hoặc một chương trình máy tính (computer program) Ngược lại sự tin cậy mù quáng hoàn toàn không thiết lập sự đòi hỏi nhận dạng Song chỉ thiết lập quyền hoặc địa vị hẹp hòi của người dùng hoặc của chương trinh ứng dụng mà thôi
Trang 8Trong một mạng lưới tín nhiệm, việc “xác thực” là một cách để đảm bảo rằng người dùng chính là người mà họ nói họ là, và người dùng hiện đang thi hành những chức năng trong một hệ thống, trên thực tế chính là người đã được
ủy quyền để làm những việc đó
Mục đích chính của việc xác thực là chứng minh danh định là hợp lệ và phù hợp với người dùng Và quyết định có cho phép người dùng truy cập vào tàinguyên của hệ thống hay không
Trang 91.1.2 Phân loại xác thực
Xác thực dữ liệu:
Xác thực dữ liệu là một kiểu xác thực đảm bảo một thực thể được chứng thực là nguồn gốc thực sự tạo ra dữ liệu này ở một thời điểm nào đó, đảm bảo tính toàn vẹn dữ liệu
- Xác thực dựa vào thực thể: biết cái gì ? (Something Known)
- Xác thực dựa vào thực thể: sở hữu cái gì ?(Something Possessed)
- Xác thực dựa vào thực thể: thừa hưởng cái gì?(Something Inherent)
1.2 Các phương pháp xác thực
Khi một đối tượng được ủy quyền, nguồn xác thực sẽ kiểm tra và xác nhận tính xác thực của đối tượng đó Có nhiều phương pháp cũng như công nghệ khác nhau để tiến hành xác thực các đối tượng trong hệ thống Tuy nhiên, việc lựa chọn phương pháp và công nghệ xác thực nào còn phụ thuộc vào thời gian, giá thành, quy mô, thậm chí cả môi trường sử dụng của hệ thống xác thực
và đánh giá rủi ro Dưới đây là ba phương pháp xác thực phổ biến có thể lựa chọn triển khai
Xác thực dựa trên những gì ta biết
Xác thực dựa vào những gì ta có
Xác thực dựa trên tính năng vật lý không đổi
Trang 101.2.1 Xác thực dựa trên những gì ta biết
Phương pháp xác thực cơ bản nhất là sử dụng Username và Password Đây là giải pháp truyền thống hay được sử dụng nhất, là giải pháp sử dụng tài khoản của hệ thống Mỗi tài khoản bao gồm tên truy nhập (username) và mật khâu (password) Tên truy nhập dùng đề phân biệt các người dùng khác nhau (thường là duy nhất trong hệ thống), còn mật khâu đề xác thực lại người sử dụngtên đó đúng là người sử đụng thật không Mật khẩu thường cho người sở hữu têntruy nhập tương ứng đặt và được giữ bí mật chỉ có người đó biết Khi người dùng muốn đăng nhập và sử dụng tài nguyên hệ thống thì phải đăng nhập bằng cách nhập tên và mật khẩu của mình Trước hết, hệ thống sẽ đối chiếu tên truy nhập cầu người dùng đưa vào cơ sở dữ liệu tên người dùng, nếu tồn tại tên người dùng thì hệ thống tiếp tục đối chiếu mật khẩu được đưa vào tương ứng vớitên truy nhập trong cơ sở dữ liệu Qua hai lần đối chiếu nếu thỏa mãn thì người đăng nhập là người dùng hợp lệ của hệ thống
Thiết kế và sử dụng đơn giản, tốn ít tài nguyên Hệ thống chỉ gồm một cơ
sở dữ liệu người dùng với 2 thông tin chủ yếu là tên truy nhập và mật khẩu Tương ứng với mỗi tên truy nhập là quyên sử dụng của người đó trong hệ thống
Do đó các thông tin này không chiếm nhiều tài nguyên Người dùng để hiểu và
để sử dụng.Và chi phí để thực hiện giải pháp này là rẻ so với các giải pháp khác
Nhưng giải pháp này có nhược điểm lớn nhất là không có được sự bảo mật cao Vì người đùng thường có tên đăng nhập nhiêu người dùng có Mặt khác, người dùng thường chọn mật khẩu để nhớ hoặc không cân thận khi gõ mậtkhẩu, do vậy để bị tấn công Kẻ tần công có nhiều phương pháp để đạt được mậtkhẩu như thâm nhập vào hệ thông đọc file mật khẩu, dự đoán mật khẩu, vét cạn các từ trong từ điển để tìm mật khẩu, hoặc có thể lừa người dùng đề lộ mật khẩu
Một số biện pháp để tăng tính bảo mật cho giải pháp này:
Trang 11- Đặt mật khẩu phức tạp: mật khẩu phải chưa tối thiểu 6 ký tự không trùng với tên đăng nhập, chứa các loại ký tự là chữ cái, chữ số, ký tự đặc biệt Nếu như vậy thì kẻ muốn tần công cũng sẽ rất khó đoán được mật khẩu.
- Thay đổi mật khẩu: quy định sau một thời gian nhất định mật khẩu sẽ không còn tác dụng đối với hệ thống và người dùng phải đặt lại mật khẩu khác Mật khẩu sẽ được thay đổi nên khả năng kiểm soát tình trạng an toàn của mật khẩu cao hơn
- Mã hóa thông tin: Trong môi trường làm việc là mạng, những nhà thiết kế thường dùng biện pháp mã hóa thông tin đăng nhập từ một máy khách nào đó trước khi chúng được gửi vào máy chủ hệ thống
1.2.2 Xác thực dựa trên những gì ta có
Một vài hệ thống xác thực yêu cầu người dùng sử dụng một đối tượng vật
lý như thẻ khóa (key-card) hoặc thẻ bài (token) Đối tượng có thể liên kết đến định danh số hoặc chia sẻ thiết bị Dạng xác thực này được gọi là xác thực dựa trên những gì đã có
Ví dụ điển hình của hệ thống này là việc sử dụng các thể khóa để truy cập vào các tòa nhà Trong nhiều hệ thống khóa, bất cứ ai sở hữu thẻ đều có thể truy cập vào bất cứ đâu mà thẻ cho phép Giữa thẻ và người dùng không có mối ràng buộc cụ thể nào Khi đó đòi hỏi người dùng phải sử dụng thêm một đối tượng vật lý xác thực khác nhằm hai mục đích Thứ nhất để giới hạn số người có thể xác thực Thứ hai là khiến người dùng phải có trách nghiệm giám sát độ an toàn của thẻ Trong trường hợp mất thẻ hoặc thất lạc phải lập tức thông báo để vô hiệu hóa thẻ
Một trong những ưu điểm của kiểu xác thực này là người dùng không cần phải nhớ mật khẩu.Khi cần xác thực, họ chỉ cần sử dụng các thiết bị vật ly được cấp quyền Các thiết bị này được dùng để xác thực dựa trên ba phương diện chính:
Giá trị mầm ngẫu nhiên
Thách thức phản hồi
Trang 12 Khóa
1.2.3 Xác thực dựa vào những gì là chính bạn
Giải pháp này dựa vào một số bộ phận của con người như dấu vân tay, hình dạng lòng bàn tay, mắt, giọng nói Đây là những đặc điểm đặc trưng mà không của người nào hoàn toàn giống của người nào Để xác thực trong máy tính, chúng ta phải số hóa và lưu trữ các đặc điểm này vào một cơ sở dữ liệu Ngoài ra còn phải có có thiết bị ghi nhận các thông tin và chuyên về để đối chiếuvới cơ sở đữ liệu đã có trong hệ thống
Ở phía máy khách, người dùng sử dụng một thiết bị đầu cuối có hỗ trợ biểu mẫu dùng cho việc đăng nhập vào hệ thống hoặc trong môi trường Internet thì sử dụng trình đuyệt để mở trang đăng nhập
Người dùng sẽ phải điển vào biểu mẫu mật khẩu hay một thông tin nhận dạng tương tự và cung cấp mẫu sinh trắc học như dấu vân tay, hình dạng lòng bàn tay, mắt, giọng nói, chữ ký Thông qua các thiết bị nhận dạng được tích hợp trong đó Sau đó, các thông tin này sẽ được chuyển vẻ trung tâm xác thực của hệ thống để kiểm tra Trung tâm sẽ phân tích mẫu thu được và đối chiếu xemmẫu tương ứng với mật khẩu được lưu trong cơ sở dữ liệu có trùng hay không, nếu trùng thì người dùng đăng nhập là hợp lệ Và hệ thống sẽ đưa các quyền hạn, tài nguyên phù hợp chỉ người sử dụng
Kẻ tấn công khó tấn công vào hệ thống khi sử dụng phương pháp này,do: người dùng hầu như không đổi được các bộ phận như vân tay, mặt,… để dùng trong xác thực; người dùng không thể đưa những đặc điểm này cho người khác
sử dụng như thẻ hay mật khấu và cuối cùng là không thể bị mất cắp
1.3 Các giao thức xác thực
1.3.1 Giao thức xác thực đơn giản
Trang 13Giao thức xác thực mật khẩu PAP (Passwork Authentication Protocol) là một giao thức bắt tay hai chiều; đó là, máy tính chủ tạo kết nối gửi nhận dạng người dùng và mật khẩu kép (passwork pair) đến hệ thống đích mà nó cố gắng thiết lập một kết nối và sau đó hệ thống đích xác thực rằng máy tính đó được xácthực đúng và được chấp nhận cho việc truyền thông Xác thực PAP có thể được dùng khi bắt đầu của kết nối PPP, cũng như trong suốt một phiên làm việc của PPP để xác thực kết nối.
Khi một kết nối PPP được thiết lập, xác thực PAP có thể được diễn ra trong kết nối đó Điểm ngang hàng gửi một nhận dạng người dùng và mật khẩu đến bộ xác thực cho đến khi bộ xác thực chấp nhận kết nối hay kết nối bị hủy
bỏ PAP không bảo mật vì thông tin xác thực được truyền đi rõ rang và không cókhả năng bảo mật bởi chống lại tấn công trở lại hay lặp lại quá nhiều bởi những người tấn công nhằm cố gắng dò ra mật khẩu đúng hay một cặp nhận dạng người dùng
Ví dụ: Giả sử là Alice muốn chứng minh với Bob là “Tôi chính là Alice”
Alice cũng cần biết người còn lại có đúng là Bob không
Malice là người xấu có ý muốn phá giao thức xác thực
Hình 1 1 Giao thức xác thực đơn giản 1
Password để ở dạng văn bản rõ, Malice có thể quan sát được
Trang 14Hình 1 2 Giao thức xác thực đơn giản 2 1.3.2 Giao thức xác thực challenge-response
Giao thức xác thực “challenge-response” cũng là mô hình xác thực dựa
trên tên người dùng/ mật khẩu Khi người dùng cố gắng đăng nhập, server đảm nhiệm vai trò thực sẽ gửi một thông điệp thử thách (Challenge message) trở lại máy tính người dùng Lúc này máy tính người dùng sẽ phản hồi lại tên người dùng và mật khẩu được mã hóa Server xác thực sẽ so sánh phiên bản xác thực người dùng được lưu giữ với phiên bản mã hóa vừa nhận Nếu trùng khớp, người dùng sẽ được xác thực Bản thân mật khẩu không bao giờ được gửi qua mạng
Giao thức xác thực “challenge-response” thường được sử dụng khi người
dùng đăng nhập vào các “remote servers” của công ty chằng hạn như RAS server Dữ liệu chứa mật khẩu được mã hóa gọi là mật khẩu băm (hash
password)
Ví dụ:
N: số nonce (number used once)
Trang 15Hình 1 3 Giao thức xác thực challenge-response
Tuy nhiên Bob phải biết trước Password của Alice
1.3.3 Giao thức xác thực dùng khóa đối xứng
Trọng mật mã học, là một lớp các thuật toán mật mã hóa trong đó
các khóa dùng cho việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia) Mã khóa loại này không côngkhai
Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải
mã có nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ mộtbiến đổi đơn giản giữa hai khóa Trên thực tế, các khóa này đại diện cho một bímật được phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự
bí mật trong kênh truyền thông tin
Nhiều thuật ngữ khác dành cho việc mã hóa dùng chìa khóa đối xứng baogồm các phương pháp mã hóa đơn khóa (single-key), phương pháp mã hóa mộtkhóa (one-key) và phương pháp mã hóa khóa cá nhân (private-key)
Cách sử dụng thuật ngữ sau cùng đôi khi gây xung đột với thuật ngữ khóa cánhân (private-key) dùng trong mật mã hóa khóa công khai (public keycryptography)
Trang 16- : Khoá chung giữa Alice và Bob
Hình 1 4 Giao thức xác thực dùng khóa đối xứng Khuyết điểm:
Chỉ có Bob xác thực được Alice
Alice không biết có đúng là Bob không
Giao thức xác thực lẫn nhau (mutual) dùng khóa đối xứng
Hình 1 5 Giao thức xác thực lẫn nhau dùng khóa đối xứng
Thông điệp ở bước 3 lặp lại từ bước 2: không thể xác thực người gửiGiao thức xác thực lẫn nhau cải tiến:
Trang 17Hình 1 6 Giao thức xác thực lẫn nhau cải tiến
Những hạn chế
Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sựphân hưởng chìa khóa bí mật, mỗi bên phải có một bản sao của chìa Do khảnăng các chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phảiđược bảo an trong khi phân phối và trong khi dùng Hậu quả của yêu cầu vềviệc lựa chọn, phân phối và lưu trữ các chìa khóa một cách không có lỗi, không
bị mất mát là một việc làm khó khăn, khó có thể đạt được một cách đáng tin cậy
Hiện nay người ta phổ biến dùng các thuật toán bất đối xứng có tốc độchậm hơn để phân phối chìa khóa đối xứng khi một phiên giao dịch bắt đầu, sau
đó các thuật toán khóa đối xứng tiếp quản phần còn lại (xem Bảo an tầng giaovận (Transport Layer Security)) Vấn đề về bảo quản sự phân phối chìa khóamột cách đáng tin cậy cũng tồn tại ở tầng đối xứng, song ở một điểm nào đấy,người ta có thể kiểm soát chúng dễ dàng hơn Tuy thế, các khóa đối xứng hầunhư đều được sinh tạo tại chỗ
Các thuật toán khóa đối xứng không thể dùng cho mục đích xácthực (authentication) hay mục đích chống thoái thác (non-repudiation) được
Trang 181.3.4 Giao thức xác thực khóa công khai
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan
hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật)
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật
mã hóa khóa công khai mặc dù hai khái niệm không hoàn toàn tương đương Có những thuật toán mật mã khóa bất đối xứng không có tính chất khóa công khai
và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng để
mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên
Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là bảo mật: một văn bảnđược mã hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải
mã với khóa bí mật của người đó
Các thuật toán tạo chữ ký số khóa công khai có thể dùng để nhận thực Mộtngười sử dụng có thể mã hóa văn bản với khóa bí mật của mình Nếu một ngườikhác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bảnthực sự xuất phát từ người gắn với khóa công khai đó
Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏathuận khóa
Trang 19Ta có:
- C : ciphertext
- M: plaintext
- : cặp khóa bí mật và công khai của Alice
- C = : mã hóa bằng khóa công khai của Alice
- M = : giải mã bằng khóa bí mật của Alice
- S = : ký lên M bằng khóa bí mật của Alice
- = M
- = M
Dùng mã hóa công khai:
Hình 1 7 Giao thức xác thực dùng khóa công khai
Dùng chữ ký số:
Trang 20Hình 1 8 Xác thực sử dụng chữ ký số 1.3.5 Giao thức xác 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 theo mô hinh hình mô hình client-server hoạt động trên những đường truyềnkhô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 và đảm bảo tính toàn vẹn và tính bảo mật cho thông tin truyền đi cả hai chiều
Kerberos được sử dụng nhiều trong thực tế
- OpenSSH (với Kerberos v5 hoặc cao hơn)
- NFS (kể từ NFSv3)
- PAM (với modular pam_krb5)
- SOCKS (kể từ SOCKS5)
- Apache (với modular mod_auth_kerb)
- Dovecot IMAP4 và POP3
- Dùng mã hóa đối xứng Được thiết kế để dùng trong những hệ thống nhỏ như
là mạng nội bộ Dựa vào thành phần thứ 3 tin cậy là Trung tâm phân phối khóa (Key Distribution Center - KDC)
- Với N người dùng
- Giao thức dùng khóa công khai: 2N khóa
- Giao thức dùng khóa đối xứng: khóa
Trang 21Hình 1 9 Mô hình xác thực kerberos
Mục tiêu và các yêu cầu đặt ra cho một hệ thống Kerberos:
Mục tiêu mật khẩu của người dùng không bị thất lạc trên mạng
Đảm bảo mật khẩu của khách hàng không lưu trữ trực tiếp trên máy ngườidùng mà dược loại bỏ ngay sau khi sử dụng Mật khẩu của người dùng khôngbao giờ nên được cất giữ trong một hình thức không được mật mã ngay cả trong
cơ sở dữ liệu máy chủ dịch vụ
Người sử dụng có yêu cầu nhập mật khẩu duy nhất một lần mỗi phiên làmviệc Vì vậy người sử dụng có thể truy cập tất cả các dịch vụ mà họ được ủyuyền cho mà không cần phải nhập lại mật khẩu trong phiên này Đặc tính nàyđược gọi là Single Sign-On Quản lý thông tin xác thực là tập trung và cư trú trênmáy chủ xác thực
Các máy chủ ứng dụng không trực tiếp xác thực thông tin cho người dùngcủa họ, điều này làm cho hệ thống có được các hệ quả:
Người Quản trị quản lý tập trung tài khoản người dùng trên các máy chủxác thực mà không cần thao tác trên các máy chủ dịch vụ
Khi người dùng thay đổi mật khẩu của mình, nó được thay đổi cho tất cảcác dịch vụ cùng một lúc
Trang 22 Không có sự xác thực thừa nhằm bảo vệ được mật khẩu
Không chỉ những người sử dụng phải chứng minh rằng họ là những người
họ nó mà các máy chủ ứng dụng phải xác thực lại của khách hàng của họ cóđúng không Đặc tính này được gọi là xác thực chéo
Sau khi hoàn thành xác nhận và uỷ quyền, Client và Server phải có khảnăng thiết lập một kết nối đã mã hóa, nếu được yêu cầu Đối với mục đích này,Kerberos cung cấp hỗ trợ cho các thế hệ và trao đổi của một khoá mật mã sẽđược sử dụng để mã hóa dữ liệu
Yêu cầu: Để Kerberos đạt được mục tiêu đã đặt ra, phải đảm bảo các yêu cầu
sau:
Bảo mật( security)
Tin cậy( reliability)
Minh bạch ( transparency)
Uyển chuyển ( scalability)
CHƯƠNG 2 GIAO THỨC XÁC THỰC KERBEROS 2.1 Tổng quan về giao thức xác thực kerberos
2.1.1 Tổng quan
Kerberos là một giao thức chứng thực mạng, nó cho phép các cá nhân giao tiếp với nhau trên một mạng không an toàn bằng cách xác thực người dùng này với người dùng k hác theo một cơ chế bảo mật và an toàn Kerberos ngăn chặn việc nghe trộm thông tin cũng như relay attacks, và đảm bảo tính toàn vẹn
Trang 23của dữ liệu Kerberos hoạt động theo mô hình client/server và nó thực hiện quá trình chứng thực 2 chiều cả người dùng và dịch vụ xác thực lẫn nhau.
Kerberos được xây dựng dựa trên mô hình mã hóa khóa đối xứng và đòi hỏi một thành phần thứ ba tin cậy (trusted third party) tham gia vào quá trình chứng thực
2.1.2 Lịch sử phát triển
Kerberos được phát triển bởi Học viện kỹ thuật Massachusetts (MIT) nhằm bảo vệ những dịch vụ được cung cấp bởi dự án Athena Kerberos trải qua nhiều phiên bản, trong đó, các phiên bản từ 1 – 3 chỉ được sử dụng nội bộ bên trong MIT
Giao thức được đặt tên dựa theo một nhân vật trong thần thoại Hy Lạp Kerberos (hay Cerberus), đó là một con chó săn 3 đầu khổng lồ dưới âm phủ.Steve Miller và Clifford Neuman, những thiết kế gia chính của Kerberos phiên bản 4, đã công bố phiên bản này vào cuối thập niên 80, mặc dù mục đích chính của họ vẫn là dùng để phục vụ cho dự án Athena
Phiên bản 5, được phát triển bởi John Kohl và Clifford Neuman, xuất hiệntrong RFC 1510 vào 1993, với mục đích khắc phục những giới hạn và các vấn
đề liên quan đến bảo mật trong phiên bản 4
Windows 2000, XP và 2003 Server sử dụng Kerberos như là một phương pháp chứng thực mặc định Hệ điều hành Mac OS cũng sử dụng Kerberos trong các phiên bản Clients và Server của mình
2.2 Một số khái niệm
2.2.1. KDC – Key Distribution Center
Key Distribution Center – trung tâm phân phối khóa của Kerberos (KDC), là một phần của hệ thống Kerberos Trên lý thuyết KDC bao gồm ba thành phần:
- Database của tất cả các principal và các khoá đã mã hoá của nó để gia nhập
- Authentication Server
- Ticket Granting Server
Trang 24Người ta thường gom chúng lại trong một chương trình duy nhất và chạy cùng nhau trong một process duy nhất
Trong một realm của Kerberos phải có ít nhất một KDC Khi nhu cầu đòi hỏi chạy KDC trên một máy bình thường, người ta khuyên rằng nên dung một KDC riêng biệt Vì nếu hệ thống mạng có nhiều KDC kết nối nhau thì tất cả các dữ liệu quan trọng bao gồm các key của các principal trong realm của bạn đều có trên mỗi KDC trong mạng Điều đó có nghĩa là có nhiều nguy cơ bị tấn ông hơn.Ngoài ra, để cho người dung xác thực thành công đến Kerberos kishc hoạt dịch
vụ ít nhất một KDC phải được hoạt động mọi lúc
Mỗi KDC chứa một database của tất cả các principal có trong realm này, cũng như các bí mật liên quan của nó Phần mềm KDC chứa hầu hết các thông tin bổ sung của các principal trong database này, chẳng hạn như thời gian sống của mật khẩu, mật khẩu thay đổi lần cuối cùng là gì và nhiều thứ khác nữa Window 2000 và 2003 giữ cơ sở dữ liệu này trong Active Directory (chứa trong LDAP)
Trong một realm có thể chứa nhiều Kerberos KDC, database trên mỗi KDC phải được đồng bộ hoá để đảm bảo thống nhất xác thực Nếu một máy chủ có dữliệu để lâu dài thì sẽ rất dễ thất bại khi tìm cách hợp pháp để xác thực với máy chủ đó, vì nó không update bản sao của các cơ sở dữ liệu của Kerberos Không
có phương pháp tiêu chuẩn đồng bộ hoá được xác định bằng giao thức Kerberos,
do đó các nhà cung cấp đã tạo ra các giao thức bản sao riêng của họ
2.2.2 SS, AS, TGS
SS - Service Server:
Máy chủ dịch vụ - Mail Server, File Server, Application Server
Bất kì một Server cung cấp dịch vụ nào đều có thể là Service Server
AS - Authentication Server: Máy chủ xác thực
Khi một user muốn tham gia vào 1 realm của Kerberos thì thay vì user phải xác thực với KDC thì phải xác thực với AS
Khi nhận yêu cầu tham gia hệ thông Kerberos của một client, AS kiểm tra nhân dạng của người yêu cầu có nằm trong cơ sở dữ liệu
Trang 25của mình hay không Nếu có thì AS gửi 2 gói tin sau tới người dung.
Gói tin A: “Khoá phiên TGS/máy khách” được mật mã hoá với khoá bí mật của người dung
Gói tin B: ” Vé chấp thuận” (bao gồm chỉ danh người dùng (ID), địa chỉ mạng của người sử dụng, thời hạn của vé và “Khoá phiên TGS/máy khác”) được mật mã hoá với khoá bí mật của TGS
TGS - Máy chủ cấp phát vé:
TGS là bộ phận nhận vé chấp thuật TGT (Ticket Granting Ticket) từ user TGS có nhiệm vụ kiểm tra các vé TGT có giá trị không bằng cách kiểm tra xem nó có được mã hoá bởi key với key của TGT server Kerberos không Nếu đúng thì gửi cho user vé dịch vụ mà usermuốn sử dụng TGS xác nhận việc sử dụng vé cho một mục đích cụ thể chẳng hạn như truy cập dịch vụ mạng
2.2.3 Ticket và Session key
Các trường chính mà mọi vé của Kerberos đều có là:
Yêu cầu tên của principal
Dịch vụ của principal có tên này là gì
Khi nào thì vé có hiệu lực, khi nào thì vé hết hiệu lực (Timestamp, Lifetime)
Danh sách IP mà vé có thẻ được dung từ đó
Chia sẻ khoá bí mật (session key) của user/ ứng dụng truyển thông
Trang 26Một vé được tạo bởi KDC được mã hoá để đảm bảo rằng những người không
có khoá không mở được nó để chính sửa, như là tăng lifetime của nó lên hoặc tên định danh của client principal
Bởi vì Kerberos chỉ xác thực một lần khi đăng nhập nên sau khi đăng nhập thì bất kỳ ai ngồi trên máy đó có thể tham gia vào hệ thông Kerberos Vì vậy, vé trong Kerberos có lifetime ngắn, khoảng từ 10-24h Điều này thuận tiện cho việcđăng nhập một lần trong ngày làm việc của user, hạn chế việc tấn công lấy mất
Ví dụ:
$klist
Ticket cache: FILE:/tmp/krb5cc_502_auJKaJ
Default principal: jgarman@WEDGIE.ORG
Valid starting: Expires Service principal
09/10/02 01:48:12 09/10/02 11:48:12 Krbtgt/WEDGIE.ORG@WEDGIE.ORG
09/10/02 01:48:14 09/10/02 11:48:12 host/cfs.wedgie.org@WEDGIE.ORG
09/10/02 04:20:42 09/10/02 11:48:12 host/cfs.wedgie.org@WEDGIE.ORG
Trong ví dụ này, bộ nhớ cache cho user principal của
jgarman@WEDGIE.ORG được lưu trong tập tin /tmp/krb5cc_502_auJKaJ.Credential cache chỉ có thể được kết hợp với một user principal tại một thờigian, nếu ta muốn truy cập các dịch vụ với một principal của
jgraman/admin@WEDGIE.ORG , ta đã có thể phá huỷ vé hiện tại của mình và tái đăng nhập để Kerberos theo jgarman/admin@WEDGIE.ORG
2.3 Nguyên lý hoạt động
2.3.1 Mô hình tiêu biểu
Dưới đây là mô hình hệ thống Kerberos tiêu biểu mà chúng ta thường thấy hiện
Trang 27- Client hay user
- Thiết bị truyền thông: router, switch, hub,
- Kerberos System: AS, TGS, database
- Server cung cấp dịch vụ: Mail server, máy in,
Hình 2 1 Mô hình kerberos tiêu biểu
2.3.2 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ũ
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 , chính là khóa phiên giữa A và B; là vé gửi từ máy khách tới máy chủ; là phần để nhận thực A với B; và để khẳng định lại nhân dạng của