Tải bản đầy đủ

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

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ

ĐỀ TÀI CHỨNG THỰC ĐIỆN TỬ
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

Sinh viên thực hiện:

Hà Nội - 2019


MỤ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
2.3.2. Mô tả giao thức...............................................................................21

1


2.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

2


DANH MỤC TỪ VIẾT TẮT
Từ viết tắt

Ý nghĩa

KDC

Key Distribution Center

LDAP

Lightweight Directory Access Protocol

SS

Service Server

AS

Authentication Server

TGS

Ticket Granting Server

SID

Security Identifier

LSA

Local Security Authority

SAM

Security Accounts Manager

GPO

Group Policy Object

3


DANH 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

4


Hình 3. 31. Đăng nhập thành công sau khi sửa lỗi.....................................47

MỞ ĐẦU
Sự phát triển lớn mạnh của công nghệ thông tin trong những năm qua đã
dẫn đến việc sử dụng rộng rãi các hệ thống máy tính trong hầu hết các tổ chức
cá nhân và công cộng. Độ tin cậy của phần cứng, phần mềm ngày càng được
nâng cao cùng với việc liên tục giảm giá, tăng kỹ năng chuyên môn của các
chuyên viên thông tin đã góp phần khuyến khích việc sử dụng các dịch vụ máy
tính một cách rộng rãi. Vì vậy việc quản lý trong các hệ thống máy tính cũng
nhiều hơn.
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.

5


Vì 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.

6


Trong 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ài
nguyên của hệ thống hay không.

7


1.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 thông điệp
- Xác thực giao dịch
- Xác thực khóa
- Xác thực nguồn gốc dữ liệu
- Xác thực đảm bảo toàn vẹn dữ liệu
Xác thực thực thể:
Xác thực thực thể là xác thực định danh của một đối tượng tham gia giao
thức truyền tin. Thực thể hay đối tượng có thể là người dùng, thiết bị đầu cuối.
Tức là một thực thể được xác thực bằng định danh của nó đối với thực thể thứ
hai trong một giao thức, và bên thứ hai đã thực sự tham gia vào giao thức.
-

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

8


1.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ụng
tên đó đúng là người sử đụng thật không. Mật khẩu thường cho người sở hữu tên
truy 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ới
tê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ật
khẩu, do vậy để bị tấn công. Kẻ tần công có nhiều phương pháp để đạt được mật
khẩ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:

9


- Đặ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

10


 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ếu
vớ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 xem
mẫ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

11


Giao 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ác
thự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

12


Hì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)

13


Hì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ông
khai.
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ột
biế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 bao
gồm các phương pháp mã hóa đơn khóa (single-key), phương pháp mã hóa một
khó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 key
cryptography).
Ta có:
- C : ciphertext
- M: plaintext
- : khóa của Alice
- C=

14


- : 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ửi
Giao thức xác thực lẫn nhau cải tiến:

15


Hì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 giao
vận (Transport Layer Security)). Vấn đề về bảo quản sự phân phối chìa khóa
mộ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ầu
như đề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ác
thực (authentication) hay mục đích chống thoái thác (non-repudiation) được.

16


1.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ột
ngườ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ười
khá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ản
thự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ỏa
thuận khóa...

17


Ta 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ố:

18


Hì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ề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 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
- Giao thức Kerberos: N khóa

19


Hì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ười
dùng mà dược loại bỏ ngay sau khi sử dụng Mật khẩu của người dùng không
bao 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àm
việ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 ủy
uyề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ên
má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ùng
củ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.

20


 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)

2.1.

CHƯƠNG 2. GIAO THỨC XÁC THỰC KERBEROS
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

21


củ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ện
trong 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

22


Ngườ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

23


củ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à user
muố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
Ticket:
Ticket (vé) được cung cấp bởi TGS và máy chủ ứng dụng, cung cấp sự
chứng thực cho máy chủ ứng dụng và tài nguyên.
Một vé Kerberos là một cấu trúc dữ liệu được mã hoá do KDC tạo ra để
share 1 key đã mã hoá của một phiên duy nhất. Vé tạo ra có 2 mục đích: xác
nhận danh tính của người tham gia và khởi tạo một khoá ngắn hạn để hai bên có
thể giao tiếp an toàn (gọi là khoá phiên).
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

24


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×