Tải bản đầy đủ (.doc) (39 trang)

Xác thực trong hệ phân tán Kerberos

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (816.65 KB, 39 trang )

- 1 -
LỜI NÓI ĐẦU 1
CHƯƠNG I 2
GIAO THỨC KERBEROS 2
1. Nội dung giao thức 3
2. Các thẻ Kerberos 9
2.1. Các yêu cầu thẻ Kerberos 9
2.2. Các thẻ dùng để trao thẻ 10
2.3. Các thẻ dịch vụ 10
2.4. Nội dung của một thẻ Kerberos 11
2.5. Các TGT có thể gia hạn 15
3. Authenticator 15
3.1. Vai trò của authenticator 15
3.2. Hoạt động của authenticator 15
3.3. Nhãn thời gian của authenticator 16
3.4. Cấu trúc của authenticator 16
4. Vùng (realm) và chứng thực liên vùng 16
5. Những cải tiến chính trong Kerberos phiên bản 5 18
6. Đánh giá giao thức Kerberos 19
6.1.Tăng cường bảo mật 19
6.2.Cung cấp cơ chế chứng thực mạnh 20
CHƯƠNG II 23
ỨNG DỤNG KERBEROS 23
1. Xác thực trong Windows : 24
1.1 SSP và SSPI 24
1.2 Kerberos Authentication 25
2. Windows Logon 26
2.1 Local Logon 26
2.2 Domain Logon 27
3. Xây dựng chương trình Demo Kerberos trong SSO 31
3.1 Chương trình Demo-Kerberos-SSO tại Client 32


3.2 Chương trình TestGateway 34
3.3 Thực hiện chương trình Demo-Kerberos-SSO: 36
4. Ưu nhược điểm của Kerberos 38
KẾT LUẬN 39
LỜI NÓI ĐẦU
Ngày nay vấn đề xác thực trong các hệ phân tán là một yếu tố vô cùng quan trọng
bởi vì các hệ phân tán không thể làm việc đơn lẻ mà phải tương tác với nhau.
Trong quá trình tương tác đó các hệ phân tán phải có những quá trình xác thực để
đảm bảo những yêu cầu về bảo mật cũng như gia tăng quyền hạn cho các thành
viên, đặc biệt để chống lại những nguy cơ bảo mật ngày càng gia tăng hiện nay.
Với những lý do như vậy em đã chọn đồ án : Xác thực trong hệ phân tán,
Kerberos để nghiên cứu về giao thức xác thực này và tìm hiểu triển khai những mô
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
1
- 2 -
hình phân tán dựa trên Kerberos để phục vụ cho các ứng dụng trên môi trường
mạng.
Với ý tưởng như vậy em đã đặt ra mục tiêu công việc như sau :
• Tìm hiểu về giao thức Kerberos.
• Tìm hiểu việc ứng dụng Kerberos trong thực tế.
• Thiết kế chương trình sử dụng giao thức Kerberos phục vụ SSO.
Như vậy đồ án Xác thực trong hệ phân tán, Kerberos của em sẽ bao gồm những
phần sau :
Chương I : Giao thức Kerberos : Chương này trình bày những tìm hiểu của em
về giao thức Kerberos, cách thức vận hành của Kerberos, các loại khóa, thẻ, phân
vùng của Kerberos.
Đồng thời trong chương này cũng phân tích một số cải tiến và đánh giá về giao thức
Kerberos hiện nay.
Chương II : Xây dựng ứng dụng Kerberos : Trình bày phần thiết kế chương trình
thử nghiệm sử dụng Kerberos để phục vụ mục đích SSO trên nền Windows 2003

Server .
Trong chương này sẽ phân tích chương trình thử nghiệm dựa trên Kerberos áp dụng
cho cơ chế domain logon và việc áp dụng cơ chế đó vào SSO.
Chương trình thử nghiệm có 2 thành phần cơ bản là Demo-Kerberos-SSO và
TestGateway.
Trong chương này cũng sẽ trình bày các biểu đồ thiết kế chương trình thử nghiệm
và kết quả đạt được.
Chương III : Kết Luận : Tổng kết công việc đã làm và những kinh nghiệm thu
được trong quá trình thực hiện đồ án.
Qua đây em cũng xin gửi lời cám ơn TS Nguyễn Linh Giang đã giúp đỡ em rất
nhiều trong quá trình thực hiện đồ án này !
CHƯƠNG I
GIAO THỨC KERBEROS
Kerberos là một giao thức chứng thực mạng được phát triển trong dự án Athena
của học viện công nghệ Massachusetts (MIT). Kerberos là một cơ chế chứng thực
mạnh cho các ứng dụng client/server trên môi trường mạng phân tán; nó cho phép
các thực thể truyền thông trong mạng chứng thực lẫn nhau mà vẫn đảm bảo an toàn,
chống nghe lén hay tấn công reply attack trên mạng. Nó cũng đảm bảo tính toàn vẹn
và tính mật cho thông tin truyền đi, sử dụng mã hoá bí mật như DES, triple DES.
Trong thông báo đầu tiên của Kerberos đã liệt kê các yêu cầu trong Kerberos đó
là:
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
2
- 3 -
- An toàn : Một kẻ nghe trộm trên mạng không thể bắt được các thông tin
cần thiết để giả mạo một người dùng. Hay nói chung là Kerberos phải đủ
mạnh để kẻ địch không thể liệt nó vào kênh có thể xâm nhập.
- Đáng tin cậy: Tất cả các dịch vụ trong mạng đều sử dụng Kerberos để
kiểm soát truy nhập, nếu thiếu dịch vụ Kerberos có nghĩa là nó chưa được
bảo đảm. Vì thế, Kerberos phải đáng tin cậy và phải sử dụng kiến trúc

máy chủ phân tán mà một hệ thống này có thể chuyển trở lại một hệ
thống khác.
- Trong suốt: Một cách lý tưởng, người dùng không thể phát hiện ra sự
chứng thực, ngoại trừ yêu cầu nhập mật khẩu.
- Co giãn được: Hệ thống phải có khả năng hỗ trợ một số lượng lớn máy
chủ và máy khách.
1. Nội dung giao thức
Kerberos không xây dựng các giao thức chứng thực phức tạp cho mỗi máy chủ
mà hoạt động dựa trên một máy chủ chứng thực tập trung KDC (Key Distribution
Centre), sử dụng giao thức phân phối khoá được đề xuất bởi Needham và
Schroeder. KDC cung cấp vé để chứng minh định danh người dùng và bảo mật
truyền thông giữa hai bên bởi khoá phiên trong vé. Một chiếc vé có thể là một chuỗi
dài khoảng vài trăm byte và có thể được nhúng vào bất kỳ trong một giao thức
mạng nào, điều này đảm bảo độc lập với giao thức giao vận của mạng.
Trung tâm phân phối khoá KDC (Key Distribution Centre) gồm máy chủ chứng
thực AS (Authentication Server) biết mật khẩu của tất cả người dùng được lưu giữ
trên một cơ sở dữ liệu tập trung, máy chủ cấp khoá TGS (Ticket Granting Server)
cung cấp vé dịch vụ cho người dùng truy nhập vào các máy chủ trên mạng.
Giao thức Kerberos được thực hiện qua ba giai đoạn, hay ba pha. Trong kịch
bản này, người dùng C đăng nhập vào máy trạm và yêu cầu truy nhập tới máy chủ
là S .
Mô hình tổng quát của giao thức Kerberos :
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
3
- 4 -
Trong phần tiếp theo ta sẽ tìm hiểu kỹ hơn về 3 pha trong kịch bản của
Kerberos :
a. Pha thứ nhất : Kết nối với AS để lấy về TGT ( 1,2)
Truyền thông với Authentication Server
Truyền thông với AS thường là giai đoạn khởi đầu của phiên đăng nhập, nhằm

lấy về có dữ liệu chứng thực (TGT) cho TGS, để sau đó lấy về chứng thực cho các
máy chủ khác mà không phải nhập lại khoá bí mật của client. Khoá bí mật của
client được sử dụng cho cả việc mã hoá và giải mã.
Truyền thông với AS cũng được sử dụng để lấy dữ liệu chứng thực cho các
máy chủ khác không do TGS quản lý như dịch vụ đổi mật khẩu.
1. Người dùng đăng nhập vào hệ thống, nhập định danh và mật khẩu. Client sẽ
chuyển đổi mật khẩu thành khoá mã hoá bí mật, lưu trữ trong biến của chương
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
4
- 5 -
trình. Cient sẽ gửi yêu cầu TGT tới AS bằng thông điệp Kerberos Authentication
Service Request (KRB_AS_REQ) gồm 3 phần sau dưới dạng Plain Text :
- Service Name : Ở đây Service Name sẽ là TGS.
- Định danh người dùng : Client's Name.
- Địa chỉ người dùng : Client's IP-Addr.
Client gửi KRB_AS_REQ tới AS
2. AS nhận được KRB_AS_REQ từ client C, AS sẽ truy lục trong cơ sở dữ liệu,
lấy khoá bí mật của C dưới dạng hash, sau đó sẽ gửi lại cho Client thông tin TGT
được mã hóa với khóa riêng của TGS đồng thời AS cũng tạo một Session-Key giữa
C và TGS được dùng để mã hóa dữ liệu cho những lần trao đổi tiếp theo giữa Client
và TGS. Toàn bộ 2 thành phần trên sẽ được mã hóa bằng khóa của Client ( mật
khẩu của Client dưới dạng hash ).
Thông tin bên trong TGT sẽ bao gồm những thành phần sau :
- Service Name : TGT.
- Định danh Client : Client's Name và Client's IP Addr.
- Time-stamp : ghi lại thời gian gửi tin.
- Ticket Lifetime : thời gian sống của TGT.
- Session Key giữa C và TGS giống như bên trên.
Toàn bộ phần TGT này sẽ được mã hóa với khóa là khóa riêng của TGS, nghĩa
là khi Client nhận được gói tin trả lời và giải mã thông tin thì Client cũng sẽ không

thể thay đổi và đọc các thông tin bên trong TGT.
2 thành phần TGT và Session-Key(C,TGS) sẽ được ghép với nhau và mã hóa
bằng khóa riêng của Client ( mã hash của Client ) điều này giúp cho việc xác thực
Client, bởi vì chỉ có mật khẩu của Client thì mới có thể giải mã thông tin này. Lưu ý
là trong toàn bộ quá trình thì mật khẩu của Client không bao giờ được gửi giữa 2
bên.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
5
- 6 -
AS gửi KRB_AS_REQ cho Client
3. Client sau khi nhận được KRB_AS_REQ sẽ giải mã gói tin này bằng khóa
riêng của mình và thu được TGT và Session-Key(C-TGS) ( khóa phiên C-TGS ).
TGT sẽ được sử dụng khi Client có yêu cầu sử dụng một dịch vụ nào đó.
Session-Key(C,TGS) sẽ được sử dụng để mã hóa những thông tin sau này giữa
Client và TGS.
Như vậy tại bước này thì Client đã có được TGT như là một chứng chỉ xác thực
sau này Client có thể đưa cho TGS để chứng mình quyền hạn của mình.
b. Pha thứ hai : Truyền thông với máy chủ cấp vé dịch vụ TGS, lấy về service
ticket ( 3,4)
Truyền thông với Ticket-granting server
1. Có vé TGT và khóa phiên trong tay, C đã sẵn sàng để truy nhập vào TGS.
Đầu tiên C gửi cho TGS một thông điệp KRB_TGS_REQ có chứa :
- Vé TGT và Định danh dịch vụ yêu cầu.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
6
- 7 -
- Authenticator được mã hoá bằng khoá phiên gồm định danh, địa chỉ
người dùng C và tem thời gian. Authenticator chỉ sử dụng một lần và có
hiệu lực trong một thời gian cực ngắn.
Client gửi yêu cầu KRB_TGS_RQ tới TGS.

2. TGS giải mã TGT bằng khóa mật của TGS, lấy ra khoá phiên dùng chung
với C ( Session-Key(C,TGS) ).
Khoá phiên này được dùng để giải mã Authenticator, kiểm tra tính hợp lệ. Nếu
đúng, TGS được đảm bảo chắc chắn rằng người gửi chiếc vé chính là chủ nhân
thực sự của nó. Khi đó, TGS sẽ sinh ra khoá phiên mới chung cho Client và Server
Dịch vụ V Và gửi thông điệp KRB_TGS_REP về cho Client bao gồm :
- Một bản sao khoá phiên giữa Client và Server S .
- Service Ticket được mã hóa bởi khóa riêng của Server S bao gồm những
thành phần sau :
+ Service Name.
+ Client's Name và Client's IP Address.
+ TimeStamp và Ticket Lifetime.
+ Session Key ( C,S).
Toàn bộ Service Ticket sẽ được mã hóa bởi khóa riêng của Server S ( khóa
này TGS biết ).
Toàn bộ thông điệp KRB_TGS_REP được mã hóa bởi Session-
Key(C,TGS).
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
7
- 8 -
TGS gửi KRB_TGS_REP cho Client
c. Pha thứ ba : Truyền thông trong chứng thực client/server ( 5,6 )
Đăng nhập vào máy chủ cung cấp dịch vụ
1. Bây giờ thì, Client sẵn sàng chứng thực với máy chủ S. Client gửi cho Server
một thông điệp KRB_AP_REQ có chứa :
- Authenticator mã hoá bởi khoá phiên dùng chung C, S.
- Service ticket mã hoá bởi khoá mật của S.
- Service Name.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
8

- 9 -
2. Server giải mã service ticket, lấy ra dữ liệu phân quyền của C và khoá phiên.
Server dùng khoá phiên nhận được giải mã authenticator, xác minh tem thời gian.
Nếu hợp lệ Server sử dụng khoá phiên mã hoá thời gian từ authenticator và gửi về
cho Client bằng thông điệp KRB_AP_REP.
3. Client giải mã thông điệp bằng khoá phiên dùng chung với Server, xác minh
thời gian trong đó có đúng như khi gửi cho V không. Nếu hợp lệ, kết nối truyền
thông sẽ được thực hiện.
2. Các thẻ Kerberos
Thành phần chính của xác thực Kerberos là thẻ. Các thông điệp Kerberos được
sử dụng để yêu cầu và phân phối các thẻ. Có hai loại thẻ được sử dụng trong xác
thực Kerberos, là TGT và thẻ dịch vụ.
2.1. Các yêu cầu thẻ Kerberos
Kerberos client gửi các yêu cầu thẻ đến KDC:
Các yêu cầu thẻ gồm có:
- Các thuộc tính được yêu cầu, ví như xác định thẻ này có được gia hạn
không.
- Phương thức mã mật được yêu cầu.
Kiều thẻ được yêu cầu
Dịch vụ KDC nhận yêu
cầu
TGT Dịch vụ xác thực
Thẻ dịch vụ Dịch vụ trao thẻ
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
9
- 10 -
Bảng 4 Các kiểu thẻ được yêu cầu
2.2. Các thẻ dùng để trao thẻ
KDC đáp ứng yêu cầu dịch vụ xác thực của một client bằng cách trả về một thẻ
dịch vụ cho chính nó. Thẻ dịch vụ đặc biệt này được gọi là thẻ dùng để trao thẻ

(TGT). TGT cho phép dịch vụ xác thực truyền tải một cách an toàn các giấy tin cậy
(credential) của người yêu cầu đến dịch vụ trao thẻ (ticket-granting service - TGS).
Một TGT là:
- Thẻ đầu tiên của người dùng từ dịch vụ xác thực.
- Được sử dụng để yêu cầu các thẻ dịch vụ.
- Chỉ có ý nghĩa khi được sử dụng bởi dịch vụ trao thẻ.
Các TGT được mã hoá với một khoá được chia sẻ bởi các KDC. Client không
thể đọc được các thẻ đó. Chỉ có các KDC server mới có thể đọc được các TGT để
đảm bảo an toàn truy cập đến các giấy tin cậy của người dùng, các khoá phiên, và
các thông tin khác. Giống như một thẻ dịch vụ bình thường, một TGT chứa một bản
sao của khoá phiên mà dịch vụ (trong trường hợp này là KDC) sẽ sử dụng trong khi
truyền thông với client. TGT này được mã mật với khoá long-term của KDC.
Từ quan điểm của client, một TGT chỉ là một thẻ khác nữa. Trước khi nó cố
gắng kết nối tới một dịch vụ nào đó, client này trước tiên kiểm tra bộ đệm các giấy
tin cậy (credentials cache) của nó về thẻ dịch vụ dành cho dịch vụ đó. Nếu thẻ này
không tồn tại, nó kiểm tra một lần nữa bộ đệm xem có TGT hay không.Nếu nó tìm
thấy thẻ TGT, thì client lấy được khoá phiên TGS tương ứng từ bộ đệm, sử dụng
khoá này để tạo ra một authenticator, và gửi cả authenticator này và TGT đến KDC,
cùng với yêu cầu xin một thẻ dịch vụ cho dịch vụ tương ứng. Nói cách khác, việc
đạt được sự chấp nhận của KDC hoàn toàn giống với việc đạt được sự chấp nhận
của bất kỳ dịch vụ khác trong cùng một miền – nó đều yêu cầu một khoá phiên, một
authenticator, và một thẻ dịch vụ.
Từ quan điểm của KDC, các TGT cho phép nó tránh được các sự bất lợi về
hiệu năng khi phải tìm kiếm một khoá long-term của người dùng mỗi khi người
dùng này yêu cầu một dịch vụ. Thay vào đó, KDC chỉ tìm kiếm khoá trên chỉ một
lần, khi nó trao cho client dùng TGT lần đầu tiên. Đối với các trao đổi các với client
này, KDC có thể giải mã TGT bằng khoá long-term của chính nó, lấy ra được khoá
phiên tương ứng, và sử dụng nó để kiểm tra tính hợp lệ của authenticator của client
này.
2.3. Các thẻ dịch vụ

Thẻ dịch vụ cho phép dịch vụ trao thẻ (TGS) truyền tải một cách an toàn giấy
tin cậy của người yêu cầu đến server hoặc service đích.
KDC đáp ứng lại yêu cầu kết nối đến một dịch vụ của client bằng cách gửi đi cả
hai bản sao khoá phiên đến client này. Bản sao khoá phiên của client được mã mật
bằng khoá mà KDC đang dùng chung với client. Bản sao khoá phiên của dịch vụ
được nhúng cùng với thông tin về client trong một cấu trúc dữ liệu và được gọi là
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
10
- 11 -
thẻ dịch vụ. Toàn bộ cấu trúc này sau đó được mã mật bằng khoá mà KDC chia sẻ
với dịch vụ. Thẻ này - với bản sao khoá phiên của dịch vụ trong đó - sẽ được quản
lý bởi client cho đến khi client này liên lạc được với dịch vụ.
Thẻ dịch vụ được sử dụng để xác thực với các dịch vụ khác với TGS và chỉ có
ý nghĩa đối với dịch vụ đích đó.
Thẻ dịch vụ được mã mật với khoá dịch vụ. Đó là một khoá long-term được
dùng chung bởi KDC và dịch vụ đích. Do đó, mặc dù client quản lý thẻ dịch vụ,
nhưng client lại không thể đọc nó. Chỉ có KDC và dịch vụ đích là có thể đọc được
các thẻ này, qua đó đảm bảo việc truy cập an toàn đến giấy tin cậy người dùng,
khoá phiên, và các thông tin khác.
Khi client nhận được trả lời của KDC, nó lấy ra thẻ dịch vụ và bản sao khoá
phiên của nó, đặt các thông tin này vào trong một bộ đệm an toàn (được định vị
trong bộ nhớ tạm thời, không phải ở trên đĩa). Khi client này muốn có được sự chấp
nhận của server, nó gửi cho server này một thông điệp trong đó bao gồm thẻ dịch
vụ, được mã mật bằng khoá mật của server, và một authenticator, được mã mật
bằng khoá phiên. Thẻ dịch vụ và authenticator này chính là giấy tin cậy của client
đối với server.
Các lợi ích của thẻ dịch vụ
Server không phải lưu trữ khoá phiên dùng trong truyền thông với client. Client
phải có nhiệm vụ lưu giữ thẻ dịch vụ dành cho server trong bộ đệm giấy tin cậy của
nó và đưa ra thẻ này mỗi khi nó muốn truy cập đến server. Mỗi khi server tiếp nhận

được một thẻ dịch vụ từ client, server có thể sử dụng khoá mật của nó để giải mã
thẻ đó và lấy ra khoá phiên. Khi server không còn cần khoá phiên nữa, nó có thể
loại bỏ khoá này đi.
Client không cần phải quay trở lại KDC mỗi lần nó muốn truy cập đến server
bởi vì các thẻ dịch vụ có thể được sử dụng lại. Để bảo vệ chống lại khả năng người
nào đó có thể ăn cắp một bản sao của thẻ dịch vụ, các thẻ dịch vụ có một thời gian
hết hạn được chỉ rõ bởi KDC trong cấu trúc dữ liệu của thẻ dịch vụ. Thời gian tồn
tại của thẻ dịch vụ phụ thuộc vào chính sách của từng miền. Đối với Kerberos trong
Windows Server khoảng thời gian mặc định là 10 giờ. Khi người dùng log off, bộ
đệm giấy tin cậy được xoá đi và tất cả các thẻ dịch vụ cũng như là các khoá phiên
đều bị phá huỷ.
2.4. Nội dung của một thẻ Kerberos
Phần này liệt kê các trường trong một thẻ Kerberos và mô tả các thông tin mà
chúng chứa trong đó.
Cấu trúc của một thẻ Kerberos
Ba trường đầu tiên trong một thẻ không được mã mật. Thông tin này ở dạng
văn bản rõ để client có thể sử dụng nó để quản lý các thẻ trong bộ đệm của nó.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
11
- 12 -
Tên trường Mô tả
Ticket Version
Number
5
Realm
Tên của một vùng đã phát ra thẻ đó. KDC có thể phát ra các thẻ
chỉ cho các server trong miền của nó, do đó trường này cũng là
tên của vùng của server.
Server Name Tên của server.
Các trường dưới đây được mã mật bằng khoá mật của server:

Flags
Các tuỳ chọn chỉ ra bằng cách nào và khi nào thẻ có thể được sử
dụng.
Key
Khoá phiên được sử dụng để mã hoá và giải mã các thông điệp
của client và server đích.
Client Realm Tên của vùng của người yêu cầu.
Client Name Tên của người yêu cầu.
Transited
Liệt kê các vùng Kerberos có tham gia vào việc xác thực của
client trong xác thực liên vùng.
Authentication
Time
Thời gian của xác thực client lần đầu tiên. KDC đặt một nhãn
thời gian vào trong trường này khi nó phát ra TGT. Khi nó phát ra
các thẻ dựa trên TGT, KDC sao chép thời gian xác thực của TGT
sang thời gian xác thực của thẻ. Một ứng dụng có thể có một
chính sách để loại bỏ các thẻ được phát ra dựa trên các TGT cũ,
nó yêu cầu client phải lấy về một TGT mới và sau đó là thẻ dịch
vụ mới.
Start Time Thời gian mà sau đó thì thẻ là hợp lệ.
End Time Thời gian hết hạn của thẻ.
Renew Till
(Tuỳ chọn) Thời gian kết thúc cuối cùng mà có thể được thiết lập
trong một thẻ thông qua cờ thẻ RENEWABLE.
Client Address
(Tuỳ chọn) Một hoặc một vài địa chỉ mà thẻ được sử dụng ở đó.
Nếu trường này bỏ trống, thì thẻ có thể được sử dụng từ bất kỳ
địa chỉ nào.
Authorization-

Data
(Tuỳ chọn) Trường này chứa dữ liệu quyền hạn (authorization)
của client. Đối với việc thực hiện Kerberos của Microsoft trường
này rất quan trong bởi vì nó chứa định danh an toàn (SID) của
người dùng và các định danh an toàn của các nhóm mà client là
thành viên. Dữ liệu này được sử dụng để xây dựng thẻ truy cập
(access token) của client (các thuộc tính đặc quyền của client).
Dịch vụ Kerberos không làm sáng tỏ nội dung của trường này,
mà việc này được dành cho dịch vụ có yêu cầu giấy tin cậy.
Các nội dung thẻ
Các cờ của thẻ
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
12
- 13 -
Bảng dưới đây liệt kê và mô tả trường Flag của thẻ Kerberos. Trường Flag là
một trường bit trong đó các tuỳ chọn được thiết lập bằng cách bật (1) tắt (0) các bit
cụ thể. Mặc dù trường này có độ dài là 32 bit, nhưng chỉ 11 cờ là đáng cho các nhà
quản trị Kerberos quan tâm.
Cờ Mô tả
FORWARDABLE
(Chỉ dành cho TGT). Thông báo với dịch vu trao thẻ rằng nó
có thể phát ra một TGT mới - dựa trên TGT hiện có - với một
địa chỉ mạng khác dựa trên TGT hiện có.
FORWARDED
Biểu thị rằng hoặc một TGT đã được chuyển tiếp hoặc một thẻ
đã được phát ra từ TGT đã chuyển tiếp.
PROXIABLE
(Chỉ dành cho TGT). Thông báo với dịch vụ trao thẻ rằng nó
có thể phát ra các thẻ với một địa chỉ mạng khác với địa chỉ
mạng ở trong TGT.

PROXY
Biểu thị rằng địa chỉ mạng trong thẻ là khác với địa chỉ mạng
trong TGT được sử dụng để lấy được thẻ đó.
MAY-POSTDATE
(Chỉ dành cho TGT). Thông báo với dịch vụ trao thẻ rằng thẻ
được ghi thời gian sử dụng muộn hơn (postdated) có thể được
phát ra.
POSTDATED Biểu thị rằng thẻ này đã được ghi thời gian sử dụng muộn hơn.
INVALID
Biểu thị rằng thẻ này là không hợp lệ và phải được xác nhận
tính hợp lệ bởi KDC trước khi sử dụng. Một thẻ postdated
được đánh dấu là không hợp lệ cho đến thời gian hợp lệ bắt
đầu của nó.
RENEWABLE
Được sử dụng kết hợp với các trường End Time và Renew Till
để cho phép thời gian tồn tại của các thẻ được gia hạn tại KDC
một cách định kỳ.
INITIAL
Biểu thị rằng thẻ được phát ra bởi dịch vụ xác thực (AS) và
không được tạo ra dựa trên TGT.
PRE-AUTHENT
Biểu thị rằng client đã được xác thực bởi KDC trước khi thẻ
được phát ra. Cờ này thường biểu thị sự hiện diện của một
authenticator ở trong thẻ. Nó cũng có thể cho biết sự hiện diện
của giấy tin cậy được lấy ra từ việc đăng nhập bằng thẻ thông
minh.
HW-AUTHENT
Biểu thị rằng việc xác thực ban đầu được thực hiện bằng cách
sử dụng phần cứng.
Các cờ của thẻ

Những thông tin các client biết về các thẻ
Một client cần phải có một vài thông tin về những thông tin ở bên trong các thẻ
và TGT để quản lý bộ đệm giấy tin cậy. Khi KDC trả về một thẻ và khoá phiên như
là kết quả của việc trao đổi dịch vụ xác thực hoặc dịch vụ trao thẻ, nó đóng gói bản
sao khoá phiên của client trong một cấu trúc dữ liệu mà trong đó bao gồm các thông
tin trong các trường thẻ dưới đây: Authentication Time, Start Time, End Time, and
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
13
- 14 -
Renew Till. Toàn bộ cấu trúc này được mã mật bằng khoá của client và được trả về
cùng với các thông điệp KRB_AS_REP hoặc KRB_TGS_REP.
Phương thức KDC giới hạn thời gian sống của thẻ
Mỗi thẻ có một thời gian bắt đầu và thời gian hết hạn. Tại mọi thời điểm sau
thời điểm bắt dầu nhưng trước thời điểm hết hạn, client đang lưu giữ thẻ của một
dịch vụ có thể đưa ra thẻ này và giành được quyền truy cập đến dịch vụ mà không
cần quan tâm đến client này đã sử dụng thẻ đó bao nhiêu lần trước đó. Trong đó để
giảm nguy cơ một thẻ hoặc khoá phiên tương ứng có thể bị xâm phạm, các nhà
quản trị có thể thiết lập thời gian sống tối đa cho các thẻ. Việc thiết lập thời gian
sống này là một thành phần của chính sách Kerberos.
Khi một client yêu cầu KDC cung cấp một thẻ cho một dịch vụ, client này có
thể yêu cầu một thời điểm bắt đầu cụ thể. Nếu thời điểm bắt đầu này vắng mặt yêu
cầu hoặc là một thời điểm trong quá khứ, thì KDC thiết lập trường thời gian bắt đầu
của thẻ bằng thời gian hiện hành.
Dù client có chỉ rõ thời điểm bắt đầu hay không, thì yêu cầu của nó phải bao
gồm thời điểm hết hạn được mong muốn. KDC xác định giá trị trong trường End
Time của thẻ bằng cách cộng thời gian tồn tại tối đa được cố định bởi chính sách
Kerberos với giá trị trong trường Start Time của thẻ. Sau đó nó so sánh kết quả với
thời điểm hết hạn được yêu cầu. Khi đó thời điểm nào sớm hơn sẽ là thời điểm kết
thúc của thẻ.
Các hoạt động xảy ra khi các thẻ hết hạn

KDC không thông báo cho các client biết khi nào các thẻ dịch vụ hoặc TGT sắp
sửa hết hạn. Thêm nữa, ngoài việc duy trì các bản ghi short-term dùng để ngăn cản
các tấn công kiểu phát lại, nó không theo dõi các giao dịch với các client.
Nếu một client đưa ra một thẻ dịch vụ đã hết hạn khi yêu cầu kết nối đến một
server, server sẽ trả về một thông điệp lỗi. Client này phải yêu cầu một thẻ dịch vụ
mới từ KDC. Tuy nhiên, sau khi một kết nối được xác thực, thì việc thẻ dịch vụ có
còn hợp lệ hay không không còn là điều quan trọng. Các thẻ dịch vụ được sử dụng
chỉ để xác thực các kết nối mới với các server. Các hoạt động đang diễn ra không bị
gián đoạn nếu thẻ dịch vụ, được sử dụng để xác thực kết nối, hết hạn trong lúc kết
nối.
Nếu một client đưa ra một TGT đã hết hạn khi yêu cầu một thẻ dịch vụ từ
KDC, KDC sẽ đáp ứng lại bằng một thông điệp lỗi. Client này phải yêu cầu một
TGT mới, và để thực hiện điều đó nó cần khoá long-term của người dùng. Nếu
client này không lưu trữ khoá này trong quá trình đăng nhập ban đầu, client có thể
phải yêu cầu người dùng cung cấp mật khẩu và từ đó lấy ra được khoá long-term.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
14
- 15 -
2.5. Các TGT có thể gia hạn
Khi các client có thể gian hạn được, các khoá phiên được làm tươi mới một
cách định kỳ mà không phát ra một thẻ mới hoàn toàn. Nếu chính sách Kerberos
cho phép các thẻ có thể gia hạn được, thì KDC sẽ thiết lập cờ RENEWABLE trong
mọi thẻ mà nó phát ra và thiết lập hai thời điểm hết hạn trong thẻ đó. Một thời điểm
hết hạn giới hạn thời gian tồn tại của instance hiện hành của thẻ. Thời điểm hết hạn
thứ hai giới hạn thời gian tồn tại tích luỹ của tất cả các instance của thẻ. Thời điểm
hết hạn đối với instance hiện tại được lưu giữ trong trường End Time. Cũng như là
các thẻ không được phép gia hạn, giá trị trong trường End Time bằng với giá trị
trong trường Start Time cộng với gia trị thời gian tồn tại lớn nhất của thẻ được quy
định bởi chính sách Kerberos. Client đang giữ thẻ có thể gian hạn được phải gửi nó
- đồng thời đưa tra một authenticator mới - đến KDC để gia hạn trước thời điểm kết

thúc. Khi KDC nhận được thẻ cần gia hạn, nó kiểm tra giá trị thời điểm hết hạn thứ
hai được lưu trong trường Renew Till. Giá trị này được thiết lập khi thẻ được phát
ra lần đầu tiên. Nó bằng với giá trị trong trong trường Start Time của thẻ cộng với
giá trị thời gian tồn tại tích luỹ tối đa của thẻ được quy định bởi chính sách
Kerberos. Khi KDC gia hạn cho thẻ, nó kiểm tra để xác định xem thời điểm renew-
till đã đến hay chưa. Nếu chưa đến, KDC sẽ phát ra một instance mới của thẻ với
thời gian kết thúc muộn hơn và một khoá phiên mới. Tại thời điểm kết thúc thời
gian tồn tại tích luỹ, thẻ hết hạn và không còn hợp lệ để gia hạn nữa.
3. Authenticator
Mỗi khi một client gửi một thẻ đến server đích, client cũng gộp một
authenticator vào trong thông điệp. Authenticator này xác nhận rằng client được liệt
kê với tư cách người gửi trong thẻ thực sự là nơi gửi thẻ.
3.1. Vai trò của authenticator
Server đích có thể tin tưởng nội dung của thẻ bởi vì thẻ đó được mã mật bằng
khoá mật của server đích đó. Tuy nhiên, server đích có thể không tin rằng thẻ đó
thực sự đã được gửi đi bởi chính client được chỉ ra trong thẻ. Thẻ này có thể bị ăn
cắp và bây giờ được gộp vào trong thông điệp của kẻ giả danh.
3.2. Hoạt động của authenticator
Authenticator được mã mật với khoá phiên, khoá này được tạo ra bởi KDC và
được sử dụng giữa client và server đích. Chỉ client và server đích có thể truy cập
được vào khoá phiên này.
Server đích sử dụng khoá mật của nó để giải mã thẻ dịch vụ, tìm ra khoá phiên
trong thẻ đó, và sử dụng nó để giãi mã authenticator.
Nếu server đích có thể giãi mã thành công authenticator và nếu dữ liệu của
authenticator là chính xác, thì server sẽ tin vào nguồn gốc của thẻ.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
15
- 16 -
3.3. Nhãn thời gian của authenticator
Nhãn thời gian này có thể là phần dữ liệu quan trọng nhất trong authenticator.

Chính sách Kerberos của miền và các chính sách khác được thiết lập bởi các ứng
dụng thường yêu cầu rằng nhãn thời gian phải trong phạm vi vài phút so với thời
gian trên server đích. Nếu ngược lại, authenticator này và thẻ tương ứng sẽ bị loại
bỏ. Điều này giúp ngăn cản việc phát lại thông điệp. Mặc dù không có authenticator
nào được gộp vào trong thông điệp yêu cầu dịch vụ xác thực ban đầu, nhưng thông
điệp này vẫn gộp nhãn thời gian của client trong trường tiền xác thực.
3.4. Cấu trúc của authenticator
Bảng dưới đây liệt kê và mô tả các trường của authenticator. Các cấu trúc dữ
liệu chính xác về các authenticator cũng như là các thông điệp có thể tìm thấy trong
RFC 1510.
Trường Mô tả
Checksum
Một tổng kiểm tra dữ liệu từ thông điệp yêu cầu dịch vụ trao thẻ
KRB_TGS_REQ) hoặc yêu cầu server ứng dụng (KRB_AP_REQ)
mà authenticator là một thành phần. Điều này giúp xác nhận rằng
người gửi thông điệp thật sự là client đó.
Subkey
Trong KRB_AP_REQ, trường này chỉ ra một khoá con mà server
đích và client sẽ sử dụng để mã mật các cuộc truyền thông sau đó,
thay vì sử dụng khoá phiên do TGS cung cấp.
Sequence
Number
Một trường tuỳ chọn, có thẻ được sử dụng để ngăn chặn các kiều
phát lại. Số thứ tự này có thể dựa trên nonce của client.
Authorization
Data
Trường tuỳ chọn này có thể bao gồm dữ liệu phân quyền cho các
ứng dụng cụ thể. Nó không giống với trường Authorization Data
mà trong đó mang thông tin chứng nhận thuộc tính đặc quyền
(PAC).

Các trường của authenticator
4. Vùng (realm) và chứng thực liên vùng
Một môi trường được cung cấp dịch vụ Kerberos toàn diện bao gồm một
máy chủ Kerberos, một lượng lớn client và các máy chủ ứng dụng cần phải được
đảm bảo :
Máy chủ Kerberos phải có định danh người dùng và mật khẩu dạng băm của tất
cả người dùng trong cơ sở dữ liệu. Tất cả người dùng đều đã đăng kí với máy chủ
Kerberos.
Máy chủ Kerberos phải dùng chung khóa bí mật với mỗi máy chủ dịch vụ. Tất
cả máy chủ này đều đã đăng kí với máy chủ Kerberos.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
16
- 17 -
Một hệ thống như thế gọi là một phạm vi an toàn (realm). Mạng của các máy
khách và máy chủ trong các tổ chức quản trị khác nhau tạo thành các phạm vi/miền
khác nhau.
Vì thế, nói chung là không thực tế hoặc không tuân theo chính sách quản trị khi
bắt người dùng và máy chủ ở phạm vi này phải đăng kí với máy chủ Kerberos ở
vùng khác. Tuy nhiên, người dùng trong một phạm vi có thể cần truy nhập tới các
máy chủ ở trong vùng khác và một số máy chủ trong vùng cũng có thể phải phục vụ
cho người dùng ở vùng khác.
Kerberos cung cấp một cơ chế cho phép chứng thực liên vùng. Để hai vùng có
thể chấp nhận chứng thực liên vùng, cần có thêm một bên thứ ba.
Máy chủ server của mỗi phạm vi liên vận hành dùng chung một khóa với máy
chủ trong khu vực kia. Có hai máy chủ Kerberos đăng kí lẫn nhau.
Mô hình này yêu cầu máy chủ Kerberos trong một vùng tin cậy vào máy chủ
Kerberos của vùng kia để chứng thực người dùng của nó. Hơn nữa, các máy chủ
của vùng thứ hai phải tin cậy máy chủ Kerberos của vùng thứ nhất.
Từ đó, ta có thể mô tả cơ chế hoạt động như hình dưới đây:
Chứng thực liên vùng trong Kerberos

Một người dùng muốn truy nhập dịch vụ của máy chủ trong vùng khác thì cần
phải có vé của máy chủ đó. Client của người dùng như thường lệ sẽ liên hệ với TGS
và yêu cầu vé xin cấp vé cho TGS từ xa. Sau đó, client có thể truy nhập tới TGS ở
xa để có vé yêu cầu dịch vụ cho máy chủ tương ứng trong vùng đó.
Kerberos hỗ trợ hai loại cấu trúc realm, chứng thực liên vùng ngang hàng (one-
to-one cross authentication) và chứng thực liên vùng phân cấp (hierachical cross
authentication). Điều này đảm bảo cho tính co giãn của hệ thống Kerberos.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
17
- 18 -
5. Những cải tiến chính trong Kerberos phiên bản 5
Phiên bản 5 Kerberos được đặc tả trong RFC 1510 và cải tiến phiên bản 4 rất
nhiều. Điểm khác nhau giữa hai phiên bản có thể nhóm lại thành : Các yếu kém môi
trường, phụ thuộc kỹ thuật.
Các yếu kém môi trường (Environmental shortcomings)
- Phụ thuộc hệ thống mã hóa : Phiên bản 4 yêu cầu phải sử dụng DES. Vì
thế, các thiếu sót thấy được của DES cũng như mọi ngờ vực về sức mạnh
của DES phải được xem đến. Trong phiên bản 5, bản mã được đính kèm
thêm chỉ danh kiểu mã hóa được dùng vì thế bất kì kiểu mã hóa nào cũng
có thể sử dụng. Các khóa mã hóa được gắn kèm kích thước và kiểu loại
nên một khóa có thể sử dụng cho nhiều thuật toán khác nhau và cho phép
biến đổi theo các đặc tả khác nhau của thuật toán sử dụng.
- Phụ thuộc vào giao thức Internet : Phiên bản 4 yêu cầu phải sử dụng địa
chỉ IP. Các kiểu địa chỉ khác, như địa chỉ mạng ISO không được chấp
nhận. Phiên bản 5, địa chỉ mạng được đính thêm thẻ độ dài và kiểu địa
chỉ cho phép bất kì kiểu địa chỉ nào cũng có thể sử dụng.
- Sắp xếp byte thông điệp : Trong phiên bản 4, người gửi thông điệp sử
dụng một trật tự byte của nó và gắn thẻ để chỉ ra byte ít có ý nghĩa nhất ở
địa chỉ thấp nhất hoặc byte có ý nghĩa cao nhất ở địa chỉ thấp nhất. Kỹ
thuật này được sử dụng nhưng không tuân theo thoả thuận thiết lập.

- Ticket lifetime : Thời gian hiệu lực trong phiên bản 4 được mã hóa thành
từng khối 8 bít của 5 phút một. Vì thế, giá trị tối đa của thời gian hiệu lực
là 2
8
* 5 = 1280 phút hay bé hơn 21 giờ. Như thế có thể không đủ cho
một số ứng dụng. Trong phiên bản 5 các vé có “ghi” rõ thời gian bắt đầu
và thời gian kết thúc.
- Chuyển tiếp chứng thực : Trong phiên bản 4 không cho phép giấy chứng
thực cấp cho một người dùng chuyển tiếp cho các máy khác và được sử
dụng bởi các client khác. Chuyển tiếp chứng thực sẽ cho phép client có
thể truy nhập vào máy chủ và cho phép máy chủ truy nhập tới máy chủ
khác mà client có quyền. Ví dụ, client phát ra một yêu cầu đến máy chủ
in, máy chủ này sẽ truy nhập vào máy chủ file có sử dụng giấy chứng
thực của client đó. Phiên bản 5 có cung cấp khả năng này.
- Chứng thực liên vùng : Trong phiên bản 4, khả năng liên vận hành giữa
N vùng khác nhau yêu cầu phải có N
2
quan hệ Kerberos-Kerberos. Phiên
bản 5 hỗ trợ chức năng với yêu cầu về số quan hệ là bé hơn.
Phụ thuộc kỹ thuật (Technical deficiencies)
- Mã hóa kép :Vé trước khi cung cấp cho client được mã hóa hai lần, một
lần sử dụng khóa bí mật của máy chủ cần truy nhập và một lần bằng khóa
bí mật của người dùng. Việc mã hóa lần thứ hai là không cần thiết, gây
lãng phí tính toán.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
18
- 19 -
- Mã hóa PCBC : Mã hóa trong phiên bản 4 sử dụng kiểu mã hóa không
theo chuẩn của DES gọi là mã hóa móc xích truyền khối (propagating
cipher block chaining - PCBC). Kiểu mã hóa này có nguy cơ bị tấn công

bằng cách tráo đổi các khối mã với nhau. Bởi PCBC cho phép kiểm tra
toàn vẹn như là một phần của thao tác mã hóa. Phiên bản 5 cung cấp một
cơ chế kiểm tra rõ ràng cho phép chế độ CBC chuẩn có thể sử dụng để
mã hóa.
- Các khóa phiên : Mỗi vé gắn kèm một khóa phiên được client sử dụng để
mã hóa authenticator gửi cho dịch vụ tương ứng với vé. Hơn nữa, khóa
phiên có thể được người dùng và máy chủ tiếp tục sử dụng để bảo vệ các
thông điệp truyền trong phiên. Tuy nhiên, do sử dụng một khóa để sử
dụng dịch vụ của mỗi máy chủ nên dễ bị kẻ gian tấn công bằng cách dùng
lại thông điệp của phiên cũ gửi cho máy chủ hoặc client. Trong phiên bản
5, máy chủ và client có thể dàn xếp với nhau để sử dụng một khóa phiên
con, khóa này chỉ có hiệu lực trong một kết nối. Cứ mỗi lần client truy
cập có thể lại phải sử dụng khóa phiên con mới.
- Tấn công mật khẩu : Cả hai phiên bản đều có điểm yếu là có thể bị tấn
công mật khẩu. Thông điệp từ AS tới client sử dụng khóa phiên sinh ra từ
mật khẩu người dùng. Kẻ địch có thể bắt lấy thông điệp và cố gắng giải
mã bằng nhiều mật khẩu khác nhau. Nếu thành công kẻ địch có thể sử
dụng để lấy chứng thực từ Kerberos. Phiên bản 5 sử dụng cơ chế gọi là
tiền chứng chứng thực làm cho việc tấn công mật khẩu khó khăn hơn
nhiều nhưng không hẳn là ngăn chặn được !
6. Đánh giá giao thức Kerberos
Qua quá trình phát triển, Kerberos đã đạt đến độ thuần thục, ổn định; phiên bản
Kerberos v5 đã được cài đặt trên hầu hết các nền tảng, được sử dụng trong rất nhiều
ứng dụng. Việc sử dụng giao thức Kerberos để xây dựng hệ thống sẽ đảm bảo
những tính năng sau cho hệ thống:
6.1.Tăng cường bảo mật
Khi một phiên truyền thông được thiết lập, khoá phiên sẽ được truyền an toàn
đến các bên truyền thông. Điều này sẽ đảm bảo cho hệ thống các tính năng bảo mật
sau:
- Tính xác thực: Không ai gửi một thông điệp sai. Do chỉ có client và máy

chủ dịch vụ có thể biết được khoá phiên nên không thể xảy ra trường hợp
có kẻ thứ ba mạo danh một trong hai bên để tham gia vào phiên truyền
thông. Ở đây, Kerberos đảm bảo tính Chứng thực lẫn nhau.
- Tính riêng tư, tính toàn vẹn: Thông điệp trước khi truyền sẽ được mã hoá
và kí bằng khoá phiên nên thám mã không thể nào có thể đọc hay thay
đổi nội dung thông điệp được truyền.
Như vậy, sử dụng giao thức Kerberos thì ta được đảm bảo tính xác thực, tính
riêng tư, và tính toàn vẹn của các thông điệp được truyền. Đây chính là các yêu cầu
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
19
- 20 -
cần và đủ để đảm bảo một phiên truyền thông an toàn. Ngoài ra, Kerberos còn cung
cấp một chức năng quan trọng như sau :
Hỗ trợ cơ chế uỷ nhiệm:
Hỗ trợ ủy nhiệm trong Kerberos
Trong các ứng dụng đa lớp, khi người dùng yêu cầu một dịch vụ ở tầng giao
diện người dùng, từ đây sẽ gửi yêu cầu đến tầng giữa thực hiện các chức năng của
hệ thống đồng thời tạo ra các giao tác truy vấn tới tầng dữ liệu lấy ra thông tin của
người dùng. Thông thường, các tầng nằm phân tán trong các máy chủ trên mạng
nên đều có cơ chế bảo mật độc lập với nhau.
Do vé Kerberos có khả năng đại diện vì thế các tầng có thể dùng vé này đại
diện cho người dùng để thực hiện các chức năng được phép. Vì thế, mỗi tiến trình
của mỗi tầng đều có thể xác định chính xác được người dùng mà nó phục vụ, từ đó
có cơ chế phân quyền, auditing phù hợp. Như vậy, với sự hỗ trợ khả năng uỷ nhiệm
trong Kerberos các dịch vụ bảo mật như auditing, phân quyền được thực hiện một
cách dễ dàng.
6.2.Cung cấp cơ chế chứng thực mạnh
Mỗi khi đăng nhập vào hệ thống (login vào KDC), người dùng sẽ được cấp
một vé TGT để xin các service ticket cho các lần truy nhập sau vào các máy chủ
dịch vụ trong hệ thống. Tức là với vé TGT, người dùng không cần phải nhập định

danh, mật khẩu thêm một lần nào nữa, vì lý do này giao thức Kerberos còn gọi là
giao thức Đăng nhập một lần (Single sign-on).
Trong hệ phân tán, tính năng Đăng nhập một lần càng thể hiện rõ rệt những lợi
điểm của nó. Khi mà các ứng dụng công nghệ thông tin ngày càng phức tạp và yêu
cầu về độ bảo mật, an toàn thông tin của hệ thống ngày càng cao. Một hệ thống có
thể bao gồm rất nhiều thành phần tương tác với nhau. Mỗi thành phần module của
hệ thống không chỉ được cài đặt trên một máy mà có thể họat động trên rất nhiều
máy tính nối mạng với nhau. Chẳng hạn trong các hệ thống Workflow, khi các dịch
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
20
- 21 -
vụ web thực thi trong workflow đòi hỏi thông tin chứng thực người dùng từ các
dịch vụ phát sinh yêu cầu phục vụ. Hay trong hệ thống tính toán lưới, việc bảo mật
thông tin về công việc gửi đến thực hiện ở các máy tính cá nhân trên mạng cũng hết
sức quan trọng. (Hệ thống tính toán lưới hỗ trợ nhiều máy tính chia sẻ thực hiện các
tính toán của một bài toán lớn, trong đó công việc được phân phối đến các máy con
(có thể cùng hoặc khác hệ điều hành) và kết quả sẽ được gửi trả về trung tâm. Các
ứng dụng của tính toán lưới có thể thi hành trong vài giờ, vài ngày và thậm chí có
thể vài tháng. Vấn đề bảo mật trong những ứng dụng này rất cao từ việc xác nhận
các máy trạm, mã hoá thông tin gửi đi đến việc nhận kết quả trả về và tổng hợp các
thông tin để cho ra kết quả cuối cùng. Trong những hệ thống như vậy đòi hỏi tính
nhất quán và bảo mật cao bởi vì bất kỳ một sai sót nào tại một trạm làm việc đều có
thể ảnh hưởng đến kết quả của toàn bộ hệ thống).
Ta sẽ đánh giá các điểm của năng SSO theo cả ba quan điểm: của người dùng,
của nhà quản trị, nhà phát triển hệ thống. Theo đó, Kerberos :
- Tăng sự tiện dụng cho người dùng: Người dùng không cần phải đăng
nhập nhiều lần khi sử dụng hệ thống, cũng như không cần phải nhớ quá
nhiều mật khẩu cho các dịch vụ trong hệ thống. Tất cả chỉ là một tài
khoản cho hết thảy các dịch vụ trong hệ thống.
- Hỗ trợ các nhà phát triển hệ thống: SSO cung cấp một framework chứng

thực chung cho các nhà phát triển. Vì thế họ không cần phải quan tâm
đến chứng thực khi xây dựng hệ thống nữa, coi như là các yêu cầu gửi
đến hệ thống đã được chứng thực. Điều này sẽ làm cho các nhà phát triển
hoàn toàn yên tâm về an ninh của hệ thống được xây dựng, mà tránh
được công việc nặng nhọc là xây dựng an toàn bảo mật cho hệ thống mới.
- Làm đơn giản hoá công tác quản trị: Theo truyền thống, mỗi ứng dụng
có cơ sở dữ liệu người dùng riêng phục vụ cho cơ chế chứng thực độc lập
của nó, nên khi các hệ thống tham gia vào mạng, số lượng người dùng sẽ
tăng lên rất nhanh làm quá tải công tác quản trị. Với SSO, mọi hệ thống
sử dụng cùng cơ sở dữ liệu người dùng tập trung vì thế công tác quản trị
đã được tập trung hoá, số lượng người dùng giảm đi rất nhiều.
- Tăng cường bảo mật: Hệ thống SSO có cơ chế chứng thực an toàn cũng
như bảo mật truyền thông trên mạng. Giảm thiểu số lần nhập mật khẩu
cũng có nghĩa là tăng độ an toàn cho hệ thống vì với số lượng mật khẩu
nhiều người dùng thường ghi mật khẩu ra xung quanh, dễ để lộ.
Tuy nhiên, bất kỳ hệ thống bảo mật nào cũng không thể chống lại tất cả các
kiểu tấn công của hacker, Kerberos cũng có những nhược điểm nhất định như:
- Khó tích hợp với các hệ thống cũ: thường thì các hệ thống sẵn có trong
mạng đã có cơ chế chứng thực riêng, cũng như cơ sở dữ liệu thông tin
người dùng riêng. Vì thế, việc tích hợp hệ thống cũ vào hệ SSO không
tránh khỏi phải sửa lại mã chương trình hệ thống cũng như di chuyển,
thay đổi cơ sở dữ liệu người dùng.
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
21
- 22 -
- Tấn công ở desktop: Cũng do tính năng SSO, có khả năng kẻ địch giành
được quyền truy nhập tới các tài nguyên khi người dùng của máy đó rời
khỏi máy sau khi đăng nhập mà quên không khoá máy lại. Hệ thống SSO
chỉ bảo mật trên đường truyền mà không bảo mật cho dữ liệu trước khi
được truyền nên mật khẩu của người dùng rất có khả năng bị các chương

trình như trojan đánh cắp, giành quyền truy nhập hệ thống.
- Điểm yếu trong mạng: Với đăng nhập một lần, dịch vụ chứng thực sẽ
được sử dụng bởi tất cả các ứng dụng trong mạng. Vì thế, dịch vụ này rất
dễ bị tấn công DDoS, làm tê liệt cả hệ thống.

Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
22
- 23 -
CHƯƠNG II
ỨNG DỤNG KERBEROS
Hiện nay Kerberos được áp dụng trong rất nhiều hệ thống từ Windows cho đến
Unix để thực hiện vai trò xác thực của mình.
Có thể thấy rằng cơ chế hoạt động của Kerberos hết sức kín kẽ và việc kẻ tấn công
có thể chiếm đọat, giả mạo thông tin hay giả mạo quyền xác thực là không thể xảy
ra.
Đối với dòng Windows Server của Microsoft thì Active Directory và Kerberos là
hai thành phần không thể thiếu, không những thế chúng có sự tác động qua lại để
tạo nên một hệ thống quản lý linh hoạt và có khả năng xác thực, ủy quyền, phân
cấp rất cao.
Nền tảng của DNS dựa trên Active Directory, đồng thời với việc quản lý
user,domain của Windows Server cũng phải có sự xác thực và ủy quyền và điều
này được Kerberos đảm nhận rất tốt.
Từ Windows 2000 cho đến Windows 2003 Server đều sử dụng Kerberos để quản
lý User trong Domain Controller.
Như vậy đối với Windows Server thì Active Directory đảm nhiệm công việc lưu
trữ phân cấp các đối tượng thông tin, còn Kerberos đảm nhiệm công việc quản lý
ủy quyền trong Domain Controller.
Trong khi tìm hiểu giao thức Kerberos trên Windows 2003 em thấy rằng có thể sử
dụng cơ chế xác thực của Kerberos để xây dựng hệ thống Single Sign On.
Trong hệ thống SSO này cần phải có những thành phần như sau :

• KDC ( Key Distribution Center )
o Windows 2003 Server.
o Cài đặt Active Direcotory.
o Cài đặt Domain Name Server là First Domain trong Forest.
• Application Server.
o IIS version 5 hoặc 6.
o ASP.NET
o .NET Framework
o Web Service TestGateway
o WSE (Web Services Enhancements)
• Client
o Sử dụng User là thành viên của DNS.
o WSE (Web Services Enhancements)
o .NET Framework
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
23
- 24 -
o Chương trình Kerberos-Test-SSO
Trong mô hình SSO này sẽ sử dụng cơ chế Domain Logon để làm bước xác thực
đầu tiên, vì thế em xin trình bày về cơ chế xác thực trong Windows trước khi giới
thiệu về chương trình thử nghiệm.
1. Xác thực trong Windows :
1.1 SSP và SSPI
Windows 2003 Server sử dụng xác thực Kerberos version 5 và đặt tên là Security
Support Provider ( SSP ), bên cạnh đó Windows 2003 Server gộp cả cơ chế xác
thực NTLM vào trong lớp SSP.
Với Windows 2003 khi khởi động sẽ mặc định bật gọi Kerberos SSP và NTML
SSP qua LSA ( Local Security Authority ) .
Microsoft SSPI ( Security Support Provider Interface ) cung cấp cơ chế chuyển
token đã được xác thực giữa Client và Server. Ở đây token có thể hiểu là một loại

chứng chỉ xác thực mà Server cung cấp cho Client để chứng mình quyền hạn của
Client.
Hình dưới đây cho thấy cấu trúc của SSPI :
Cấu trúc hoạt của SSPI
Authentication Mô tả
Kerberos Giao thức Kerberos chuẩn Version 5.
NTLM Giao thức xác thực dạng challenge ( thử thách ) hỗ trợ cho các
phiên bản Windows cũ.
Digest Chuẩn SSP sử dụng cho LDAP và Web Authentication, trao
đổi thông tin về chứng chỉ dưới dạng mã MD5 hoặc các dấu
hiệu riêng.
Schannel Là dạng SSP hỗ trợ thực thi SSL hay TLS.
Negotiate Là một dạng SSP có khả năng thực hiện những xác thực đặc
biệt .
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
24
- 25 -
1.2 Kerberos Authentication
Như đã trình bày ở phần I về giao thức Kerberos, việc áp dụng vào hệ thống
Windows Server cũng tuân thủ những chuẩn đã được đưa ra ở trên.
Như vậy cụ thể những thành phần Kerberos Authentication trong Windows Server
cũng sẽ bao gồm Client, Server ( cung cấp dịch vụ ) và KDC ( máy chủ Windows
Server 2000 hoặc 2003 ).
Bên cạnh đó hệ thống sẽ có sự trao đổi những thông tin sau :
- User Key.
- Ticket Granting Ticket ( TGT ).
- TGT Session Key.
- Service Ticket.
- Session Ticket.
- Service Key.

Các thành phần trong Kerberos Authentication
Trần Quang Hoàn TT&MMT - K47 GVHD: T.S Nguyễn Linh Giang
25

×