Giao thức Kerberos-role

Một phần của tài liệu Nghiên cứu phát triển các giải pháp kiểm soát truy nhập đảm bảo an toàn an ninh cho mạng máy tính191 (Trang 54)

♦ Các chức năng thành phần.

Kerberos-role vẫn sử dụng các giấy uỷ nhiệm của Kerberos: vé Kerberos và bộ xác thực. Một vé truyền tải thông tin định danh của một thành phần máy khách do dịch vụ phân phối khoá KDC chứng thực dùng cho một dịch vụ cụ thể. Một bộ xác thực là một bằng chứng chứng tỏ rằng vé đợc phát hành từ đầu cho một thành phần máy khách chứ không phải là vé có đợc bất hợp pháp. Khác với Kerberos, ở đây vé giao tiếp giữa thành phần máy khách và máy chủ dịch vụ chứa cả vai của thành phần máy khách dùng cho kiểm soát truy nhập dựa trên vai. Sau khi đã xác thực định danh của thành phần máy khách và tính hợp lệ của vé, kết quả kiểm soát truy nhập dựa trên vai sẽ cho phép hay cấm thành phần máy khách truy nhập máy chủ dịch vụ này, hoặc cho phép truy nhập những tài nguyên nào với thao tác nào đó.

Các chức năng của hệ thống xác thực Kerberos-role đợc chia thành ba phần: thành phần máy khách C, thành phần dịch vụ phân phối khoá KDC và thành

phần dịch vụ quản trị PKDC hoạt động nh một máy chủ uỷ nhiệm Proxy của dịch vụ KDC. Bên cạnh đó là thành phần quản trị vai AdminRole đảm nhiệm việc quản lý và cập nhật vai cho các định danh thành phần máy khách để xây dựng các vé giao tiếp dịch vụ có chứa vai của thành phần máy khách. AdminRole đợc tích hợp

trong hệ thống quản lý tài nguyên RMS (Resource management system). đây ở không đi vào phân tích cơ chế hoạt động của AdminRole.

Thiết kế dịch vụ KDC để quản lýhai cơ sở dữ liệu bảo vệ giao dịch: cơ sở dữ liệu xác thực và cơ sở dữ liệu vé. Dịch vụ KDC là định danh tin cậy duy nhất trong hệ thống quản lý tài nguyên RMS. Tất cả các định danh khác đều đợc xác thực dựa trên dịch vụ KDC. Để việc quản lý hệ thống xác thực đợc dễ dàng, chỉ có các định danh quản trị của KDC mới có khả năng truy nhập tới dịch vụ KDC. Ban đầu, một định danh quản trị ngầm định đợc đăng ký trong cơ sở dữ liệu xác thực của KDC. Các định danh quản trị đợc các dịch vụ quản trị sử dụng. Các dịch vụ quản trị đợc tích hợp với các nhiệm vụ của dịch vụ RMS. Dịch vụ KDC chủ yếu hoàn thành ba chức năng sau: (i) Chức năng đăng ký và cập nhật định danh; (ii) Chức năng sản sinh vé phiên và (iii) Chức năng làm mới vé. Khác với Kerberos, trong hệ thống này, khi một thành phần máy khách êu cầu truy nhập một dịch vụ thì chỉ phải thực y hiện xác thực hai bớc. Thành phần máy khách không cần biết việc xác thực giữa KDC và PKDC.

Hình 2.1 – Xác thực hai b ớc trong Kerberos role -

1 AdminRole PKDC KDC S C 4 5 6 2 3

♦ Giao thức Kerberos-role.

Sử dụng các kí hiệu ở Mục 1.3.3, ta có :

Bớc 1: Lấy khoá phiên và vé giao tiếp với dịch vụ S (1 ) C → PKDC : (C, addr, S, n)

thực hiện trên lớp cổng bảo mật SSL Secur Socket Layer ( e ) (4 ) PKDC → C : {KC,S , n, {ticket(C, S)}KS}KC

Bớc 2: Truy nhập dịch vụ S khi dùng khoá phiên và vé giao tiếp với S (5 ) C → S : ({auth(C)}KC,S ,{ticket(C, S)}KS , { , Mn 1}KC,S)

(6 ) S → C : ({n}KC,S , M2)

M1 là yêu cầu dịch vụ của C, M2 là đáp ứng yêu cầu dịch vụ của S cho C.

Hình 2.2 – Minh hoạ giao thức Kerberos role theo thời gian- 2.1.2. Các giao thức con của Kerberos-role

Giao thức Kerberos role có 5 giao thức con- là: giao thức đăng ký định danh, giao thức lấy vé dịch vụ, giao thức yêu cầu dịch vụ, giao thức cập nhật định danh và giao thức làm mới vé. 1 3 4 5 6 2 Máy khách C Máy uỷ nhiệm PKDC Máy chủ cấp phát vé KDC Máy chủ dịch vụ S

Trong hệ thống RMS, mỗi định danh đều cần đợc đăng ký trong dịch vụ KDC để sản sinh khoá riêng của nó trớc khi định danh này có thể giao tiếp với các định danh khác. KDC ban đầu tự mình đăng ký vào trong cơ sở dữ liệu xác thực. KDC là dịch vụ đầu tiên đợc triển khai trong hệ thống. PKDC sử dụng định danh ngầm định D trong cơ sở dữ liệu xác thực của KDC để lấy vé giao tiếp với KDC:

(1 ) PKDC→ KDC : (D, addr, KDC, n) (thực hiện trên SSL ) (2 ) KDC →PKDC : { KD,KDC , , {n ticket(D, KDC)}KKDC }KD

PKDC dùng giao thức cập nhật định danh ( sẽ đề cập trong 2.1.2.4 để cập ) nhật định danh mới PKDC và mật khẩu mới p cùng vai role(PKDC) của PKDC vào trong cơ sở dữ liệu xác thực của KDC:

(1 ) PKDC→ KDC : ({auth(D)}KD,KDC , {ticket(D, KDC)}KKDC ,

{D,{D, PKDC, p} KD , role(PKDC), n}KD,KDC ) (2 ) KDC →PKDC : {n}KPKDC

PKDC dùng tên mới PKDC và mật khẩu mới p để giải mã thông báo và nhận đợc mã hiệu , n chứng tỏ việc cập nhật thành công.

PKDC dùng định danh mới PKDC để lấy vé giao tiếp với KDC:

(1 ) PKDC→ KDC : (PKDC, addr, KDC, n) (thực hiện trên SSL ) (2 ) KDC →PKDC : { KPKDC, KDC, , {ticket(PKDC, n KDC)}KKDC }KPKDC

Kể từ đây PKDC có khoá phiên và vé giao tiếp với KDC.

2.1.2.1. Giao thức đăng ký định danh

(1 ) C → PKDC : (C, p, n) (thực hiện trên SSL) (2 ) PKDC → KDC : ({auth(PKDC)}KPKDC, KDC , {ticket(PKDC, KDC)}KKDC, {C, p, role(C), n}KPKDC,KDC ) (3 ) KDC →PKDC : {{n}KC}KPKDC (4 ) PKDC → C : {n}KC

Để đăng ký định danh thành phần máy khách, trớc tiên cần gửi định danh, mật khẩu và một mã hiệup n cho dịch vụ PKDC một cách an toàn (n là một số tuần tự đợc thành phần máy khách của hệ thống sản sinh và dùng một lần khi giao tiếp với một dịch vụ).

ở đây, có thể dùng giao thức mật https (hypertext transfer protocol over secure socket layer) cho việc truyền an toàn ban đầu trên lớp cổng bảo mật SSL. Khi dịch vụ PKDC nhận đợc định danh và mật khẩu của một thành phần máy khách C, nó kích hoạt AdminRole để lấy ra vai role(C) của thành phần máy khách C này. Tiếp theo, dịch vụ PKDCmã hoá bộ dữ liệu (C, p, role(C), ) khi dùng khoá n

phiên KPKDC,KDC giao tiếp giữa PKDC và KDC và gửi bản mã cho dịch vụ KDC. Khi dịch vụ PKDC yêu cầu dịch vụ KDC, nó tự xác thực với dịch vụ KDC bằng cách gửi cho KDC một bộ xác thực {auth(PKDC)}KPKDC,KDC , một vé {ticket(PKDC, KDC)}KKDC giao tiếp với KDC.

Hình 2.3 – Minh hoạ giao thức con đăng ký định danh

KDC giải mã vé nhận đợc bằng khoá riêng KKDC rồi dùng khoá phiên KPKDC,KDClấy ra từ vé này để giải mã bộ xác thực. Sau đó KDC sẽ so sánh nội dung của bộ xác thực và vé. Nếu kết quả hợp lệ thì trớc yêu cầu đăng ký định danh của thành phần máy khách C, KDC sẽ kiểm tra tính duy nhất của định danh này, sản sinh một khoá riêng KC (có thể dùng khoá DES) dựa trên mật khẩu và định danh của thành phần máy khách C.

Khi mọi việc đã thành công, KDC trả lại PKDC thông báo {{n}KC}KPKDC. Dịch vụ PKDC giải mã thông báo, lấy đợc {n}KC và gửi {n}KC cho thành phần máy khách C mà chỉ C mới có thể giải mã bằng mật khẩu đã đăng ký của mình ban đầu (mã hiệu n báo nhận tốt).

1 4 2 3 Máy chủ dịch vụ S Máy chủ cấp phát vé KDC Máy uỷ nhiệm PKDC Máy khách C

2.1.2.2. Giao thức lấy vé dịch vụ

(1 ) C → PKDC : (C, addr, S, n) (thực hiện trên SSL) (2 ) PKDC → KDC : ({auth(PKDC)}KPKDC,KDC ,{ticket(PKDC, KDC)}KKDC ,

{C, addr, role(C), S, n}KPKDC,KDC) (3 ) KDC →PKDC : {{KC,S , n, {ticket(C, S)}KS }KC }KPKDC

(4 ) PKDC → C : {KC,S , n, {ticket(C, S)}KS }KC

Trong đó: ticket(C, S) = (C, addr, role(C), S, t1 , t2 , tf , tn , KC,S)

Hình 2.4 – Minh hoạ giao thức con lấy vé dịch vụ

Muốn truy nhập một dịch vụ, một thành phần máy kháchtrớc hết cần phải có một vé dịch vụ Để lấy một vé dịch vụ, thành phần máy khách sử dụng định danh . C, mật khẩu của nó và vé giao tiếp với KDC. Tơng tự nh Kerberos, thành phần máy khách của hệ thống xác thực lu giữ mật khẩu trong bộ nhớ cục bộ và gửi một thông báo cho PKDC. Thông báo này chứa định danh, địa chỉ IP của thành phần máy khách và định danh của máy chủ dịch vụ. Sau khi thực thi kiểm soát truy nhập, PKDC lấy vai role(C) của thành phần máy khách C thông qua thành phần quản trị vai AdminRole rồi kích hoạt dịch vụ cấp phát vé của KDC.

Đến lợt mình, KDC nhận bộ dữ liệu (C, addr, S, role(C)) từ PKDC với addr là địa chỉ IP của C. PKDC yêu cầu dịch vụ cấp phát vé trong KDC bằng cách gửi một thông báo mã hoá chứa định danh, địa chỉ IP, vai role(C) của thành phần máy

1 4 2 3 Máy khách C Máy uỷ nhiệm PKDC Máy chủ cấp phát vé KDC Máy chủ dịch vụ S

khách C và định danh của máy chủdịch vụ. Thông báo này đợc mã hoá bằng khoá phiên KPKDC,KDC đợc gửi cho KDC cùng với bộ xác thực{auth(PKDC)}KPKDC,KDC và vé {ticket(PKDC, KDC)}KKDCgiao tiếp với KDC.

Sau khi giải mã và so sánh nội dung của bộ xác thực auth(PKDC) với nội dung của vé ticket(PKDC, KDC). Nếu kết quả hợp lệ thì KDC kiểm tra định danh của thành phần máy khách C và máy chủ dịch vụ S xem có tồn tại không. Nếu chúng tồn tại, KDC sản sinh một khoá phiên mới ngẫu nhiên KC,Sđể dùng cho việc mã hoá và giải mã giữa thành phần máy khách C và máy chủ dịch vụ S. Hơn nữa, nó xây dựng một vé dịch vụ {ticket(C, S)}KScho thành phần máy khách để truy nhập máy chủ dịch vụ. Vé này chứa định danh, địa chỉ IP của thành phần máy khách và định danh của máy chủ dịch vụ S, khoá phiên KC,S , thời gian phát hành vé t1 , thời gian hết hiệu lực của vé t2 , thời gian sống của vé tf , thời điểm làm mới vé tn

và vai role(C) của C. Cụ thể ticket(C, S): ( addr, S, t= C, 1 , t2 , tf , tn , KC,S ,role(C)) Vé đợc mã hoá bằng khoá riêng KS của máy chủ dịch vụ sao cho chỉ máy chủ dịch vụ đó mới giải mã đợc vé. Vé ticket(C, S) đợc lu giữ trong cơ sở dữ liệu vé của KDC để sử dụng lại trong phiên giao dịch lần sau giữa C và S. Tất nhiên nó đợc làm mới định kỳ và làm mới bất cứ khi nào có sự thay đổi vai của C trong AdminRole.

Khoá phiên KC,S và vé đã mã hoá gộp lại thành một thông báo. Thông báo này lại đợc mã hoá trớc tiên bằng khoá riêng KCcủa thành phần máy khách. Sau đó nó đợc mã hoá bằng khoá riêng KPKDC của PKDC. Bản thông báo mã hoá đợc gửi trở về cho PKDC. Tiếp theo, PKDC giải mã bản thông báo mã hoá khi dùng khoá riêng của nó. Nếu việc giải mã thành công thì PKDC gửi bản thông báo đã giải mã cho thành phần máy khách C yêu cầu lúc đầu mà chỉ có thành phần máy khách này mới có thể đọc đợc.

Khi thành phần máy khách có đợc đáp ứng về yêu cầu vé của mình, nó trích ra khoá phiên và vé dịch vụ khi dùng khoá riêng KC của mình.

2.1.2.3. Giao thức yêu cầu dịch vụ

(1 ) C → : S ({auth(C)}KC,S , {ticket(C, S)}KS , { , Mn 1}KC,S) (2 ) S → : ({C n}KC,S , M2)

Trong đó: auth(C)= (C, addr, t , ) ticket(C, S)= (C, addr, role(C), S, t1 , t2 , tf , tn , KC,S) Sau khi đã lấy đợc vé {ticket(C, S)}KS và khoá phiên KC,S , để truy nhập một máy chủ dịch vụ , một S thành phần máy khách C trớc tiên sản sinh một bộ xác thực chứa định danh, địa chỉ IP, vai role(C) của thành phần máy khách, thời gian hiện tại và tổng kiểm tra của yêu cầu. Sau đó nó mã hoá bộ xác thực khi dùng khoá phiên giao tiếp với máy chủ d ch vụị S và gửi bộ xác thực đã đợc mã hoá cùng với vé dịch vụ cho máy chủ này.

Khi máy chủ dịch vụ S nhận đợc một yêu cầu dịch vụ, nó giải mã vé {ticket(C, S)}KSnhận đợc bằng khoá riêng KS của mình và trích ra khoá phiên dịch vụ KC,S để giải mã bộ xác thực{auth(C)}KC,S . Máy chủ dịch vụ sẽ tính tổng kiểm tra của yêu cầu và so sánh với tổng kiểm tra trong bộ xác thực. Nếu kết quả khác nhau, nó không đáp ứng yêu cầu dịch vụ và báo lỗi. Nếu kết quả giống nhau (chứng tỏ tính toàn vẹn của thông báo) thìmáy chủ dịch vụ sẽ so sánh nội dung trong vé với nội dung trong bộ xác thực để chắc chắn rằng thành phần máy khách C này là đối tác mà nó đang giao tiếp và yêu cầu là đến từ chính thành phần máy khách C. Máy chủ dịch vụ cũng cần biết chắc chắn địa chỉ thành phần máy khách này đợc chứa

trong định danh. Cuối cùng, nếu mọi kết quả đều hợp lệ, dịch vụ sẽ trích ra vai role(C) của thành phần máy khách C để tiến hành kiểm soát truy nhập dựa trên vai. Căn cứ vào kết quả kiểm soát truy nhập này, dịch vụ sẽ cho phép hay cấm chỉ thành phần máy khách C truy nhập.

Hình 2.5 – Minh hoạ giao thức con yêu cầu dịch vụ

1 2 Máy chủ dịch vụ S Máy chủ cấp phát vé KDC Máy uỷ nhiệm PKDC Máy khách C

2.1.2.4. Giao thức cập nhật định danh (1 ) C → PKDC : (C, {C, C', p}KC , n) (thực hiện trên SSL) (2 ) PKDC → KDC : ({auth(PKDC)}KPKDC,KDC , {ticket(PKDC, KDC)}KKDC , {C, {C, C', p}KC , role(C’), n}KPKDC, KDC) (3 ) KDC →PKDC : {{ }Kn C’}KPKDC (4 ) PKDC → C : {n}KC’

Hình 2.6 – Minh hoạ giao thức con cập nhật định danh

Máy khách có định danh cũ là C, định danh mới là C’ và mật khẩu mới là p (hoặc mật khẩu cũ nếu mật khẩu không cần thay đổi . )

Để cập nhật định danh và mật khẩu, một thành phần máy khách trớc tiên sinh ra một bản thông báo gồm định danh cũ C của nó, định danh mới C’ và mật khẩu mới p hoặc mật khẩu cũ nếu mật khẩu không cần thay đổi rồi mã hoá bằng , khoá riêng của nó.

Sau đó nó gửi định danh của mình và bản thông báo đã mã hoá cho dịch vụ PKDC và dịch vụ PKDC sẽ chuyển chúng cho KDC. Nếu có sự thay đổi vai của C ứng với định danh mới C’ thì AdminRole sẽ cung cấp vai mới role(C’) của C’cho KDC để thêm vào thông báo này. Bởi vì định danh mới và mật khẩu mới đợc mã hoá, nên cả KDC lẫn dịch vụ PKDC đều không đọc đợc chúng.

Khi KDC có đợc thông báo cập nhật định danh, nó lấy ra khoá riêng của

thành phần máy khách trong cơ sở dữ liệu xác thực dựa trên định danh rõ trong 1 4 2 3 Máy uỷ nhiệm PKDC Máy khách C Máy chủ cấp phát vé KDC Máy chủ dịch vụ S

thông báo. Rồi nó giải mã dữ liệu mã hoá trong thông báo. Nếu định danh thành phần máy khách trong dữ liệu mã hoá cũng chính là định danh rõ, thì việc sửa chữa của bản giải mã đợc công nhận. Tiếp theo KDC sẽ cập nhật định danh của thành phần máy khách và khoá riêng bằng cách sinh ra một khoá mới KC’ dựa trên định danh mới C’ và mật khẩumới. KDC cũng làm mới vé của C’ giao tiếp với các dịch vụ S bằng vai mới role(C’) của C’.

2.1.2.5. Giao thức làm mới vé

Đây là chức năng của riêng trung tâm phân phối khoá KDC. Nólàm mới các vé hết hạn và các vé cũ không hợp lệ trong cơ sở dữ liệu vé. Theo định kỳ, thành

phần KDC kiểm tra các vé ticket(C, S) trong cơ sở dữ liệu vé của mình để hiệu chỉnh thời gian phát hành vé t1 , thời gian hết hiệu lực của vé t2 , thời gian sống của vé tf , thời điểm làm mới vé tnnếu nh các vé này hết hạn.

Nếu xảy ra sự thay đổi vai role(C) của một định danh thành phần máy khách C nào đó, thành phần AdminRole sẽ cập nhật sự thay đổi này rồi truyền vai mới role’(C) của thành phần máy khách cho PKDC.

Đến lợt mình, PKDC gửi cho KDC một bộ xác thực, một vé giao tiếp giữa PKDC và KDC cùng với một thông báo chứa định danh, địa chỉ IP, vai mới role’(C) của thành phần máy khách định danh của dịch cụ S và một mã hiệu , n. Thông báo này đợc mã hoá bằng khoá phiên KPKDC,KDC . KDC giải mã bộ xác thực và vé giao tiếp để xác thực PKDC. Nếu hợp lệ, KDC giải mã thông báo cuối cùng {C, addr, S,

n, role’(C)}KPKDC,KDC . Bộ dữ liệu (C, addr, S, role’(C)) đợc KDC dùng để làm mới vé ticket(C, S) của thành phần máy khách C.

+ Vé cũ của thành phần máy khách C giao tiếp với dịch vụ S: ticket(C, S) (= C, addr, S, t1 , t2 , tf , tn, KC,S , role(C)) + Vé mới của thành phần máy khách C giao tiếp với dịch vụ S:

(*)

2.1.3. áp dụng logic BAN phân tích giao thức Kerberos-role 2.1.3.1. Phân tích giao thức Kerberos-role tr ờng hợp tổng quát

Để đơn giản, từ mục này ký hiệu: KDC là S, PKDC là P, auth(A)= (TA , A) và ticket(A, B) = (A, B, role(A), TAB , KAB). Trong đó TA là thời gian hiện tại khi phát hành bộ xác thực auth(A), TAB là tem thời gian bao gồm thời gian phát hành vé t1 , thời gian hết hiệu lực của vé t2 , thời gian sống của vé tf , thời gian làm mới vé tn

Một phần của tài liệu Nghiên cứu phát triển các giải pháp kiểm soát truy nhập đảm bảo an toàn an ninh cho mạng máy tính191 (Trang 54)

Tải bản đầy đủ (PDF)

(149 trang)