Hệ phân tán - Chương 9: An toàn – An ninh (Security)
Đặt vấn đề.
1.1.1 Các mối đe dọa, chính sách và cơ chế an toàn , an ninh.
a. Các mối đe dọa.
Hệ thống máy tính luôn bị đe dọa bởi các nguy cơ mất an toàn. Một trong những công việc để bảo vệ hệ thống là làm sao giúp hệ thống tránh khỏi các nguy cơ đó. Có 4 loại các mối đe dọa an toàn:
Interception (chặn bắt): chỉ thành phần không được phép cũng có thể truy cập đến các dịch vụ hay các dữ liệu, “nghe trộm” thông tin đang được truyền đi.
Interruption (đứt đoạn): là mối đe dọa mà làm cho dịch vụ hay dữ liệu bị mất mát, bị hỏng, không thể dùng được nữa
Modification (thay đổi): là hiện tượng thay đổi dữ liệu hay can thiệp vào các dịch vụ làm cho chúng không còn giữ được các đặc tính ban đầu.
Fabrication (giả mạo): là hiện tượng thêm vào dữ liệu ban đầu các dữ liệu hay hoạt động đặc biệt mà không thể nhận biết được để ăn cắp dữ liệu của hệ thống
18 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 3325 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Hệ phân tán - Chương 9: An toàn – An ninh (Security), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 9: An toàn – An ninh.
(Security)
Đặt vấn đề.
Các mối đe dọa, chính sách và cơ chế an toàn , an ninh.
Các mối đe dọa.
Hệ thống máy tính luôn bị đe dọa bởi các nguy cơ mất an toàn. Một trong những công việc để bảo vệ hệ thống là làm sao giúp hệ thống tránh khỏi các nguy cơ đó. Có 4 loại các mối đe dọa an toàn:
Interception (chặn bắt): chỉ thành phần không được phép cũng có thể truy cập đến các dịch vụ hay các dữ liệu, “nghe trộm” thông tin đang được truyền đi.
Interruption (đứt đoạn): là mối đe dọa mà làm cho dịch vụ hay dữ liệu bị mất mát, bị hỏng, không thể dùng được nữa…
Modification (thay đổi): là hiện tượng thay đổi dữ liệu hay can thiệp vào các dịch vụ làm cho chúng không còn giữ được các đặc tính ban đầu.
Fabrication (giả mạo): là hiện tượng thêm vào dữ liệu ban đầu các dữ liệu hay hoạt động đặc biệt mà không thể nhận biết được để ăn cắp dữ liệu của hệ thống.
Các cơ chế an toàn, an ninh.
Có 4 cơ chế an toàn, an ninh được đưa ra:
Mật mã (Cryptography): là việc thực hiện chuyển đổi dữ liệu theo một quy tắc nào đó thành dạng mới mà kẻ tấn công không nhận biết được.
Xác thực (Authentication): là các thao tác để nhận dạng người dùng, nhận dạng client hay server…
Ủy quyền (Authorization).: chính là việc phân định quyền hạn cho mỗi thành phần đã đăng nhập thành công vào hệ thống. Quyền hạn này là các quyền sử dụng dịch vị, truy cập dữ liệu…
Kiểm toán (Auditing): là các phương pháp để xác đinh được client đã truy cập đến dữ liệu nào và bằng cách nào.
Các vấn đề khi thiết kế.
Điều khiển (focus of control).
Có ba cách tiếp cận:
Chống các thao tác bất hợp lệ: việc này thực hiện bằng cách bảo đảm toàn vẹn chính các dữ liệu đó mà không quan tâm đến việc phân tích sự hợp lệ của thao tác.
Hình Chống các thao tác bất hợp lệ
Chống các triệu gọi thao tác không được ủy quyền.: không bảo đảm toàn vẹn dữ liệu mà tập trung vào các thao tác. Thao tác nào là bất hợp lệ sẽ bị hủy bỏ ngay.
Hình Chống các triệu gọi thao tác không được ủy quyền
Chống người sử dụng không được ủy quyền: ở cách tiếp cận này lại tập trung vào quản lý người dùng. Xác định người dùng và các vai trò của họ trong hệ thống cứ không quan tâm đến đảm bảo dữ liệu hay quản lý các thao tác của người dùng.
Hình Chống người sử dụng không được ủy quyền
Phân tầng các cơ chế an toàn (Layer of security mechanism)
Một vấn đề quan trọng trong việc thiết kế một hệ thống an toàn là quyết định xem cơ chế an toàn an ninh được đặt ở tầng nào. Việc xác định vị trí đặt đó phụ thuộc rất nhiều vào yêu cầu của client về các dịch vụ an toàn, an ninh của từng tầng.
Trong một hệ phân tán, cơ chế an toàn, an ninh được đặt ở tầng middleware.
Phân tán các cơ chế an toàn (Distribution of security mechanism)
Xét khái niệm TCB (Trusted Computing Base): là tập hợp tất cả các cơ chế an toàn, an ninh trong hệ phân tán, các cơ chế này phải tuân theo một ràng buộc an toàn nào đó.
Mật mã (Cryptography)
Một cơ chế an toàn, an ninh cơ bản trong hệ phân tán đó là mã mật. Tư tưởng cơ bản là: bên gửi mã hóa bản tin cần truyền, truyền bản tin đã mã hóa đi, bên nhận sẽ giải mã bản tin nhận được thành bản tin ban đầu.
Gọi:
Bản tin ban đầu là P.
Khóa mã hóa là Ek.
Bản tin được mã hóa theo khóa Ek là C: C=Ek(P).
Khóa giải mã là Dk.
Bản tin được giải mã theo khóa giải mã: P=Dk(C).
Có hai loại hệ thống mật mã: mật mã đối xứng (symmetric cryptosystem) và mật mã bất đối xứng (asymmetric cryptosystem).
Mật mã đối xứng: dùng khóa bí mật..
Với mật mã đối xứng: khóa mã hóa và khóa giải mã là giống nhau. Ta có:
P=Dk(Ek( P ) ) . Cả bên nhận và bên gửi đều phải có khóa trên, khóa phải được giữ bí mật.
Nguyên lý chung của giải thuật DES (Data Encryption Standard):
Hình nguyên lý chung của DES
Thực hiện trên các khối dữ liệu 64 bit. Mỗi khối này được mã hóa qua 16 vòng lặp, mỗi vòng có một khóa mã hóa 48 bit riêng. 16 khóa này được sinh ra từ 56 bit khóa chính.
Đầu vào của vòng lặp mã hóa thứ i là dữ liệu đã được mã hóa của vòng lặp thứ (i-1). 64 bit dữ liệu qua mỗi vòng lặp được chia thành hai phần bằng nhau: Li-1 và Ri-1, cùng bằng 32 bit . Phần dữ liệu bên phải Ri-1 được lấy làm phần bên trái của dữ liệu cho vòng sau: Ri-1= Li. Hàm f với đầu vào là Ri-1 và khóa Ki sinh ra khối 32 bit được XOR với
Li-1 để sinh ra Ri.
Hình Một vòng mã hóa
Phương pháp sinh khóa của giải thuật DES:
Hình Sinh khóa theo giải thuật DES
Mỗi khóa 48 bit cho mỗi vòng lặp được sinh ra từ khóa chính 56 bit như sau: hoán vị khóa chính, chia đôi thành hai phần 28 bit. Tại mỗi vòng, mỗi một nửa đó sẽ quay trái một hoặc hai bit, sau đó lấy ra 24 bit kết hợp với 24 bit của nửa còn lại tạo ra khóa.
Mật mã bất đối xứng: dùng khóa công khai.
Mật mã bất đối xứng: khóa mã hóa và khóa giải mã là khác nhau. Ta có:
P=DkD(EkD ( P )). Trong hệ thống này, một khóa sẽ được giữ bí mật còn một khóa sẽ được công khai.
Xét giải thuật RAS (được đặt theo tên của các nhà phát minh ra nó:Rivest, Shamir, Adleman) :
Cách sinh khóa của giả thuật RAS: thực hiện theo 4 bước:
Chọn 2 số chính lớn: p,q
Tính n = p.q và z = (p-1).(q-1)
Chọn một số d liên quan đến z
Tính toán e sao cho e.d =1 mod z.
Như thế d có thể dùng để giải mã còn e dùng để mã hóa. Ta có thể công khai một trong hai số này, tùy thuật toán.
Nguyên lý chung của giải thuật RAS:
Coi bản tin được truyền đi là một dãy các số nhị phân. Chia bản tin m đó thành các khối có kích thước cố định mi sao cho 0<= mi <=m. Ở bên gửi, với mỗi khối mi sẽ tính một giá trị ci = mei (mod n) rồi gửi đi.Bên nhận sẽ giải mã bằng cách tính: mi = cdi (mod n) .
Như vậy, để mã hóa cần biết e và n còn để giải mã thì cần biết d và n.
Kênh an toàn (Secure channels).
Xác thực (Authentification).
Xác thực dựa trên khóa bí mật.
Nguyên lý chung: bên gửi muốn giao tiếp với bên nhận sẽ gửi một yêu cầu A tới bên nhận. Bên nhận trả lời bằng một yêu cầu RB . Bên gửi sẽ mã hóa yêu cầu RB bằng khóa bí mật KA,B và gửi về cho bên nhận. Bên nhận xác thực được bên gửi nhờ nhận biết được yêu cầu RB mình đã gửi trong gói tin vừa nhận. Lúc này bên gửi muốn xác thực bên nhận sẽ tiếp tục gửi yêu cầu RA tới bên nhận. Bên nhận sẽ lại mã hóa RA bằng khóa bí mật KA,B đó và gửi về cho bên nhận. Và như thế bên nhận đã xác định được bên gửi, sau đó quá trình trao đổi sẽ được thực hiện.
Hình Xác thực dựa trên khóa bí mật
Một mô hình cải tiến hơn là thu gọn số lượng bản tin chỉ còn lại 3 bản tin giữa bên nhận và bên gửi.
Hình Xác thực dựa trên khóa bí mật nhưng dùng 3 bản tin
Nhưng hiện nay, giao thức hay được dùng là “reflection attack” như được mô tả trong hình vẽ sau:
Hình Reflection Attack
Xác thực dựa trên trung tâm phân phối khóa.
Nếu hệ thống gồm N host, mỗi host phải chia sẻ một khóa mật với N-1 host khác thì hệ thống cần quản lý N.(N-1)/2 khóa, và mỗi host phải quản lý N-1 khóa. Như vậy nếu N lớn sẽ rất khó khăn trong việc quản lý. Do đó, để khắc phục hiện tượng trên ta sử dụng trung tâm phân phối khóa KDC (Key Distribution Center).
Tư tưởng chính: bên gửi sẽ gửi bản tin tới trung tâm phân phối khóa thông báo mình muốn giao tiếp với bên nhận. KDC sẽ gửi cho cả bên gửi và bên nhận một bản tin có chứa khóa bí mật KA,B . Bản tin gửi cho bên nhận sẽ được mã hóa bằng KA,KDC . Bản tin gửi cho bên gửi sẽ được mã hóa bằng KB,KDC .
Hình Nguyên lý của KDC
Cách tiếp cận thứ hai là KDC sẽ gửi cả hai bản tin chứa khóa bí mật KA,KDC (KA,B ) và KB,KDC (KA,B ) cho bên gửi và bên gửi có nhiệm vụ gửi cho bên nhận khóa đã được KDC mã hóa KB,KDC (KA,B ) đó.
Hình Dùng ticket
Xác thực dựa trên khóa công khai.
Hình Xác thực dựa trên khóa công khai.
Bên gửi mã hóa yêu cầu bằng khóa công khai K+B của bên nhận. Bên nhận này là nơi duy nhất có thể giải mã bản tin đó bằng K-B. Bên nhận sẽ mã hóa yêu cầu của bên gửi cùng với yêu cầu của chính mình và khóa KA,B vừa tạo ra bằng khóa công khai K+A của bên gửi nhằm xác thực bên gửi. Cuối cùng, bên gửi sẽ gửi lại cho bên nhận yêu cầu RB của bên nhận đã gửi đi để xác thực.
Tính toàn vẹn và tính mật của thông điệp.
a. Chữ kí số.
Chữ kí số để đảm bảo tính toàn vẹn của thông điệp.
Có nhiều cách thiết lập chữ kí số cho thông điệp:
Cách 1: dùng hệ mật mã khóa công khai là RSA.
Hình chữ kí số cho một bản tin dùng khóa công khai
Bên gửi sẽ mã hóa bản tin bằng khóa riêng K-A của mình, sau đó sẽ mã hóa tiếp nội dung bản tin và phiên bản chữ kí bằng khóa công khai K+B của bên nhận. Bản tin được mã hóa này sẽ được truyền đi cùng bản tin m. Bên nhận sau khi nhận được bản tin sẽ giải mã gói tin, lấy phiên bản chữ kí của m và so sánh với m để xác thực rằng bản tin này được gửi từ bên gửi đó và cũng để kiểm tra xem có thay đổi trên đường truyền hay không.
Cách 2: dùng hàm băm.
Hàm băm H dùng để tính toán một bản tin có độ dài cố định là một chuỗi bit h từ một bản tin có độ dài tùy ý m. Nếu giá trị m thay bằng giá trị m’ thì H(m’) cũng có giá trị khác giá trị h = H(m), do đó ta có thể dễ dàng xác định được những thay đổi trên bản tin m trên đường truyền.
Hình chữ kí số cho một bản tin dùng message digest
Bên gửi sẽ tính toán các bản tin có độ dài cố định từ bản tin m và mã hóa bằng khóa riêng của mình. Bản tin được mã hóa này sẽ được truyền đi cùng bản tin m. Khi nhận, bên nhận giải mã bản tin và thực hiện so sánh với bản tin m đã được truyền đi để xác định được rằng bản tin này gửi từ bên gửi đó và đã được kí bằng chữ kí số.
b. Khóa phiên
Trong một kênh trao đổi an toàn, sau pha xác thực sẽ tiến hành truyền thông. Mỗi kênh truyền thông đó được xác định bởi một khóa phiên tương ứng. Khi phiên truyền kết thúc thì khóa phiên tương ứng cũng bị hủy bỏ.
Truyền thông nhóm an toàn
Truyền thông nhóm bí mật
Mô hình đơn giản là tất cả các thành viên trong nhóm sẽ cùng có một khóa bí mật để mã hóa và giải mã các bản tin. Điều kiện tiên quyết cho mô hình này là phải đảm bảo rằng tất cả các thành viên trong nhóm phỉa giữ bia mật khóa đó.
Mô hình thứ hai là dùng một khóa bí mật cho từng cặp thành viên trong nhóm. Khi một trong hai thành viên kết thúc phiên truyền thì thành viên còn lại vẫn sẽ dùng khóa đó để giao tiếp với thành viên khác trong nhóm. Với mô hình này phải duy trì tới N (N-1)/2 khóa.
Mô hình thứ ba là dùng khóa công khai. Mỗi một thành viên trong nhóm sẽ phải duy trì một cặp khóa công khai và khóa riêng, trong đó khóa công khai được dùng bởi tất cả thành viên trong nhóm.
Server nhân bản an toàn
Việc nhân bản các server thường dùng trong việc chịu lỗi cho hệ phân tán nhưng đôi khi cũng được dùng để đảm bảo tính tin cậy cho hệ thống.
9.1.3 Cryptography
Nền tảng bảo mật trong hệ phân tán là sử dụng các kỹ thuật mã hóa. Ý tưởng áp dụng các kỹ thuật rất đơn giản. Giả sử, người gửi S muốn truyền một thông điệp m đến người nhận R. Để bảo vệ thông điệp trước các nguy cơ về bảo mật, người gửi trước tiên mã hóa nó thành một thông điệp không thể hiểu được m’, và sau đó gửi m’ cho R. R đến lượt nó, phải giải mã thông điệp nhận được về dạng ban đầu m.
Cả mã hóa và giải mã đều sử dụng một phương pháp mã mật: key. Mô hình được minh họa bằng hình 9-6
Khi truyền thông điệp mã hóa Ciphertex C, chúng ta cần phải đề phòng 3 dạng tấn công khác nhau.
- Chặn thông điệp để nghe trộm.
- Sửa đổi thông điệp.
- Chèn thêm thông điệp giả.
Việc phân biệt các hệ thống mã hóa dựa trên việc giống hay khác của khóa mã hóa và giải mà. Trong hệ mã hóa đối xứng, 2 khóa này giống nhau
P = Dk(Ek(P))
Hệ mã hóa đối xứng còn gọi là hệ khóa mật hoặc hệ khóa chia sẻ, bởi vì bên gửi và bên nhận yêu cầu cùng một khóa, và để chắc chắn, việc chia sẻ khóa cần được giữ bí mật.
Trong hệ mã hóa bất đối xứng, khóa để mã hóa và giải mã là khác nhau, nhưng thuộc cùng một cặp
Một khóa được giữ private còn một khóa đươc đặt public. Nên hệ này còn được gọi là hệ mã hóa công khai.
Ứng dụng cuối cùng của việc mã hóa trong hệ phân tán là sử dụng hàm băm. Hàm băm H lấy đầu vào là một thông điệp có chiều dài bất kỳ và sản phẩm là một chuỗi bit h có độ dài cố định ở đầu ra
h = H(m)
Mã băm h so sánh mức độ nào đó với các bit được gắn thêm vào thông điệp, cho phép phát hiện lỗi, như là cyclic-redundancy check (CRC)
Hàm băm là các hàm 1 chiều. Nghĩa là không thể tính toán để tìm được các thông điệp đầu vào m tương ứng với đầu ra h. Hoặc quá trình tính toán này không hề dễ dàng (với các cấu hình máy tính hiện tại, có thể đến cả trăm năm,…).
Các thuộc tính cần có đối với bất kỳ hàm mã hóa E và khóa được sử dụng như sau
+ Đối với bất kỳ hàm E nào, khó khả năng tính toán để tìm ra khóa K khi đưa ra cả văn bản ban đầu P và văn bản mã hóa C=Ek(P).
+ Khi đưa ra văn bản rõ P và khóa K.Khó có khả năng tìm ra 1 khóa K’ mà Ek(P) = Ek’(P)
Ví dụ đầu tiên, Chuẩn mã hóa dữ liệu cơ bản – Data Encryption Standard (DES) – Hệ mã hóa đối xứng. DES được thiết kế cho khối dữ liệu 64bit. Một khối được mã hóa sau 16 lượt, mỗi khối sử dụng 48 bit khóa để mã hóa, mỗi một khóa trong 16 khóa được nhận được từ 56 bit master key
Mỗi lượt mã hóa i dùng 64 của lượt trước (i-1) làm đầu vào – Hình 9-8(b). 64 bit này được chia thành 2 phần bằng nhau: trái Li-1 và phải Ri-1. Phần bên phải sẽ là đầu vào cho phần bên trái ở lượt kế tiếp, Li = Ri-1
Mangler function f: hàm này nhận vào 32 khối 32 bit Ri-1 cùng với khóa Ki 48 bit, sau đó dùng 32 bit kết quả XOR với Li-1 để tạo thành Ri. Đầu tiên f mở rộng Ri-1 ra thành khối 48 bit rồi XOR nó với Ki. Kết quả được chia thành 8 chunks đều nhau.
9.4. Quản trị bảo mật – an ninh
Ở các mục trước chúng ta đã thảo luận về bảo mật trên các kênh và điều khiển truy cập nhưng vẫn chưa đề cập đến vấn đề bằng cách nào để có được những khóa bảo mật
Trong phần này chúng ta phân làm 3 mục
- Mục đầu xem xét đến quản lý các khóa mật mã nói chung và đặc biệt là cách thức phân tán khóa, theo đó chứng chỉ đóng 1 vái trò quan trọng ở đây
- Mục thứ 2, chúng ta xem xét các vấn để của quản trị an ninh các nhóm server bằng cách tập trung vào những vấn đề xuất hiện khi them vào 1 nhóm server thành viên được tin tưởng của những server thành viên hiện tại. Trong các dịch vụ được phân tán và nhân bản, việc không cho những tiến trình gây hại là khá quan trọng
- Mục 3, chúng ta chú ý tới việc quản lý xác thực bằng cách xem xét khả năng và những cái chúng ta đã biết đến như chứng chỉ thuộc tính (văn ông này đúng là bull shit). Một vấn đề quan trọng trong hệ thống phân tán trong khía cạnh quản lý xác thực là một tiến trình có thể đại diện cho một vài hoặc tất cả những truy nhập hợp của chúng lên đến những tiến trình khác. Đại diện hợp lện theo cách bảo mật có những sự tế nhị của chúng mà chúng ta cũng sẽ xem xét trong phần sau
9.4.1 Quản lý Khóa
Có 2 vấn đề chính trong Quản lý khóa, đó là Thiết lâp khóa và Phân tán khóa
Thiết lập khóa.
Một sự kết hợp ngắn gọn và được ứng dụng rộng rãi đượuc sử dụng trong việc thiết lập 1 khóa chia sẻ thong qua một kênh không an toàn được gọi là Diffic-Hellman key exchange. Giao thức làm việc như sau: Giả sử rằng A và B muốn thiết lập một khóa chia sẻ. yêu cầu đầu tiên là 2 bên phỉa đồng ý 2 con số lớn là n và g, cả n và g đều được thiết lập công khai và không cần phải che dấu chúng so với bên ngoài. A chọn ra một số lớn ngẫu nhiên , gọi là x để giữ bí mật. Tương tụ, B cũng chọn ra số y và như vậy là đã có đủ thông tin để xây dựng 1 khóa bảo mật
Bên A sẽ gửi cho bên B: n, g và (gx mod n). Bên B sẽ thực hiện tính (gx mod n)y= gxy mod n. do đó sẽ xác định được khóa bí mật x của bên A. Đồng thời, bên B cũng gửi cho bên A (gy mod n). Bên A thực hiện tính toán (gy mod n)x= gxy mod n nhờ đó cũng xác định được khóa bí mật y của bên B.
Có thể nhìn nhận phương thức này như một cách mã hóa khóa công khai. Trong trường hợp đối với A, x là khóa riêng của A, gx mod n là khóa công khai
Phân tán khóa
Một trong những phần khó khăn hơn của quản lý khóa là phân tán việc cài đặt khóa.
Trong hệ mã hóa đối xứng, việc cài đặt mật khóa chia sẻ phải được truyền đi trên kênh truyền riêng.
Trong trường hợp của hệ thống mã hóa khóa công khai, chúng ta cần phân tán kôas công khai theo một cách mà bên nhận có thể chắc chắn rằng khóa đuwocj cặp với một khóa riêng khác. Khóa tiêng đương nhiên cũng cần được guiử thông qua một kênh bảo mật cung cấp sự xác thực trong kênh truyền
Trên thực tế sự phân tán khóa công khai được tiến hành theo cách chứng chỉ khóa công khai. Một chứng chỉ như vậy bao gồm một khóa công khai cùng với một dòng nhận danh thực thể mà khóa được kết hợp vào. Thực thể có thể là user nhưng cũng có thể là 1 host hoặc 1 vài thiết bị đặc biệt. Khóa công khai và định danh phải được ký bằng một chứng chỉ xác thực và chữ ký này được đặt vào trong chứng chỉ
Việc sử dụng một chứng chỉ khóa công khai họat động như sau: Giả thiết rằng 1 client muốn xác định rằng khóa công khai tìm được trong chứng chỉ có thự là thuộc về thực thể được xác thực hay không. Sau đó nó sử dụng khóa công khai của chứng chỉ ủy quyền để kiểm tra chữ ký của chứng chỉ. Nếu chữ ký khớp với cặp (khóa công khai, định danh) thì client sẽ chấp nhận rằng khóa công khai chắc chắn thuộc về thực thể đã được xác định
Điều quan trọng cần chú ý là bằng việc chấp nhận chứng chỉ như trong thứ tự, client tin rằng chứng chỉ không bị gỉa mạo. Đặc biệt là client phải thừa nhận rằng khóa công khai K+CA chắc chắn thuộc về chứng chỉ ủy quyền liên kết với nó. Nếu như nghi ngờ, client có thể kiểm tra tính hợp lệ của khóa K+CA thông qua một chức chỉ khác có thể là từ một chứng chỉ ủy quyền tin cậy
Thời gian sống của Chứng chỉ
Nếu khóa riêng của thực thể đã được định danh được chấp nhận thì không client đủ tin cậy nào có thể sử dụng khóa công khai. Trong trường hợp này, chúng ta cần một cơ cấu để hủy chứng chỉ bằng cách thông báo công khai rằng chứng chỉ đó không còn hợp lệ.
Có nhiều cách để hủy một chứng chỉ
- Cách 1: sử dụng danh sách các chứng chỉ bị hủy bỏ CRL (certification revocation list). Khi cllient kiểm tra một chứng chỉ thì nó cũng kiểm tra trong danh sách CRL để kiểm tra xem chứng chỉ này đã bị hủy hay không. Nếu danh sách được phát hành theo ngày thì mỗi client phải được cập nhật danh sách này thường xuyên theo ngày.
Hạn chế:
+ Một chứng chỉ có thể không sử dụng được cho đến lần cập nhật danh sách CRL tiếp theo
+ Thời gian cập nhật CRL không được quá lâu
+ Chi phí cho việc tạo danh sách RCL đôi khi là 1 gánh nặng cho hệ thống
- Cách 2: mỗi chứng chỉ tự động hết hiệu lực sau một thời gian xác định nào đó. Nhưng nếu muốn hủy chứng chỉ trước thời gian đó thì vẫn phải dùng đến danh sách CRL như trên.
Hạn chế:
Vẫn bắt client kiểm tra danh sách CRL gần nhất để kiểm tra 1 chứng chỉ
- Cách 3: giảm thời gian tồn tại có hiệu lực của một chứng chỉ xuống gần bằng 0. Khi đó client phải thường xuyên kiểm tra chứng chỉ để xác đinh thời gian có hiệu lực của khóa công khai.
Trong thực tế, những chứng chỉ được cấp phát một thời gian sống hữu hạn. Với ứng dụng Internet, thời gian hết hạn thường nhiều bằng 1 năm. Cách tiếp cận này đổi hỏi rằng những CRL được công khai đều đặn nhưng chũng cũng được giám sát khi mà những chứng chỉ được kiểm tra(check).
9.4.2. Quản lý nhóm bảo mật
Xét nhóm G, khóa mật CKG được chia sẻ với tất cả các thành viên của nhóm để mã hóa thông điệp của nhóm. Nhóm còn có thêm 1 cặp khóa công khai/riêng (KG+, KG-) để giao tiếp với các thành viên của nhóm khác.
Tiến trình P muốn tham gia vào nhóm G sẽ gửi yêu cầu JR để tham gia. JR định danh G và P, thời gian cục bộ T của P. RP (Reply pad) và khóa bí mật KP,G được mã hóa sử dụng khóa công khai KG+ của nhóm. JR được gán bởi P và nó được gửi đi cùng với chứng chỉ chứa khóa công khai của P.
Khi một thành viên nhóm Q nhận một yêu cầu từ P, nó sẽ xác thực P, xác định tem thời gian T để đảm bảo rằng P vẫn còn giá trị tại thời điểm gửi. Sau đó lấy ra khóa công khai của P để kiểm tra tính hợp lệ của JR.
Nếu P được chấp nhận vào nhóm, Q trả lại thông điệp GA nhận dạng P và chứa N (nonce). RP được sử dụng để mã hóa khóa giao tiếp của nhóm CKG. P sử dụng khóa KG- để mã hóa cùng với CKG. Sau đó thông điệp GA được gán cho Q sử dụng khóa KP,G.
Do chỉ duy nhất 1 nhóm thành viên có thể có được khóa bảo mật KP,Q nên tiến trình P có có thể xác nhận Q. N hiện tại trong giao thức này không chỉ được dùng cho bảo mật mà còn dùng khi P gửi lại N đã được mã hóa với KP,Q (thông điệp 3), Q sau đó biết rằng P đã nhận tất cả các khóa cần thiết và nó sẵn sàng tham gia nhóm
9.4.3.Quản trị sự xác thực ( hoặc ủy quyền)
Quản trị an ninh- bảo mật trong HPT cũng liên quan đến quản trị truy cập hợp lệ. Theo đó vấn đề được đề cập là làm thể nào để việc truy cập hợp lệ được cài đặt cho các user và nhóm user
Trong hệ không phân tán, quản trị truy cập hợp lện khá dễ dàng. Khi một user được add vào hệ thống, user này sẽ được mang lại một quyền, VD: quyền tạo file và thư mục con, tạo tiến trình…
Trong HPT, vấn đề thực tế là phức tạp hơn khi mà tài nguyên được phân tán rộng trên các máy. Nếu theo cách của hệ không phân tán thì phải tạo mỗi một tài khoản trên từng máy. Về cơ bản , cách tiếp cận này giống như trong HĐH mạng và vấn đề được đơn giản hóa bằng cách tạo 1 tài khoản đơn trên server tập trung. Server này được tham chiếu mỗi khi user truy cập tài nguyên hoặc thiết bị
Capability và Chứng chỉ thuộc tính
Cách tiếp cận tốt hơn nhiều mà được áp dụng rộng rãi trong HPT là cách sử dụng năng lực. Như đã giải thích ở trên, năng lực là một cấu trúc dữ liệu không thể giả mạo cho các tài nguyên đặc trưng, từong minh hóa một cách rõ ràng quyền truy nhập. Phương thức khác của capability tồn tại và được sử dụng trong HĐH Amoeba
Amoeba là một trong những HPT theo đối tượng đầu tiên. Mô hình phân tán đối tượng của nó là mô hình đối tượng từ xa.
Một capability là một từ định danh 128 bit, cấu trúc bên trong được mô tả như sau:
48 bit đầu tiên được khởi tạo khi đối tượng được tạo ra bởi server của đối tượng. 48 bít này được gọi là server port.
24 bit tiếp theo được sử dụng để xác định đối tượng tại server đã định sẵn.
8 bit tiếp theo xác định quyền truy cập của holder của capability
Trường check (48bit cuối) được dùng để tạo ra một capability thật (không thể giả mạo được).
Khi một đối tượng được khởi tạo, server của đối tượng đó chọn lấy một trường check ngẫu nhiên và lưu trữ nó trong cả capability và trong cả table riêng của server
Để tạo ra capability bị giới hạn, một client có thể gửi lại 1 năng lực cho server với 1 mặt nạ bit cho quyền mới. Phía server sẽ lấy trường check từ những bảng của nó, XOR nó với quyền mới(quyền này phải là tập con của những quyền nằm trong capability) và sau đó chạy kết quả thông qua một one-way function
Server sau đó tạo một capability mới với cùng giá trị trong trường object nhưng có những bit quyền mới trong trường quyền và đầu ra của one-way function trong trường check.
Trong ví dụ trên, người sở hữu bị tắt hết các quyền, chỉ trừ lại 1 quyền là đọc.
Việc tạo ra các capability mà đôi khi được sử dụng trong HPT hiện đại được gọi là chứng chỉ thuộc tính – Attribute certificate.
Không giống như nhữgn chứng chỉ đã đề cập đến ở trên được sử dụng để xác nhận tính hợp lệ của khóa công khai, chứng chỉ thuộc tính được sử dụng để liệt kê danh sách những cặp (thuộc tính, giá trị) được đưa vào trong thực thể được định danh. Thông thường chứng chỉ thuộc tính có thể được sử dụng để liệt kê danh sách những quyền truy cập mà holder của chứng chỉ có với tài nguyên được xác định
Sự ủy quyền(delegation)
Nếu user muốn in một file lớn mà đã được gán quyền chỉ đọc cho user này. Để không ảnh hưởng đến user khác, user này gửi 1 request đến print server in trang đó không sớm hơn 2h sáng. Thay vì gửi cả file đến print server thì user chỉ cần gửi tên file để server copy file đó vào Spooling directory.
Mặc dù rằng việc này có vẻ là được xắp xếp hoàn hảo nhưng thực tế là có nhiều vấn đề trong đó: máy in thông thường là sẽ không được cho phép truy cập vào tên file. Nói cách khác, nếu không có biện pháp nào được đưa ra ngay khi printer muốn đọc file để in thì hệ thống sẽ từ chối truy cập đến file này. Vấn đề này có thể được giải quyết nếu user có một sự ủy quyền tạm thời cho print server với quyền truy cập của user với file
Sự ủy thác quyền truy nhập là một kỹ thuật quan trọng để thực thi sự bảo vệ trong hệ thống máy tính và đặc biệt hơn là trong hệ phân tán. Ý tưởng cơ bản rất đơn giản: bằng việc chuyển quyền truy nhập từ tiến trình này sang tiến trình khác, nó sẽ trở nên dễ dàng hơn để phân tán công việc giữa các tiến trình mà không làm ảnh hưởng tới việc bảo vệ tài nguyên.
Có vài cách để thực thi sự ủy quyền, một cách là sử dụng proxy.
Khi A tạo ra 1 proxy, nó gồm 2 phần. Phần đầu là một tập C = {R,S+proxy} bao gồm một tập R các quyền truy cập được ủy thác bởi A, theo đó những phần công khai của bảo mật được sử dụng để xác thực bởi holder của chứng chỉ. S+proxy được sử dụng như sau: Chứng chỉ mang chữ ký Sig(A,C) của A để chống lại việc sửa đổi. Phần thứ 2 bao gồm phần khác của bảo mật file biểu thị như S-proxy và S-proxy này cần thiết đển chống lại việc tiết lộ dữ liệu khi ủy thác truy cập vào tiến trình khác
Một cách nhìn khác về proxy như sau: Nếu A muốn ủy quyền một số quyền của A cho B, A sẽ tạo một danh sách quyền (R) mà B có thể thực thi. Bằng cách ký vào danh sách, A bảo vệ B khỏi việc bị can thiệp. Tuy nhiên ngần đó là không đủ. Nếu B muốn thực thi quyền của B thì B phải chứng tỏ được rằng B có danh sách từ A hay không. Theo đó A gửi đi 1 câu hỏi (S+proxy) mà chỉ A mới biết câu trả lời (S-proxy). Bất cứ ai cũng có thể kiểm tra sự đúng đắn của câu trả lời khi được đưa ra câu hỏi và câu hỏi được đưa vào list trước khi A thêm chữ ký vào
C có thể hỏi câu hỏi của A được đặt ở phần dưới của danh sách. Nếu B biết câu trả lời thì C biết chắc chắn rằng A đã ủy quyền danh sách quyền cho B.
Một thuộc tính quan trọng của vấn đề này là không cần thiết phải tham chiếu đến A, trong thực tế B có thể quyết định là đưa toàn bộ hay 1 phần quyền trong danh sách cho 1 D nào đó. Làm vậy, B sẽ cho D biết câu trả lời
Một giao thức cho sự ủy nhiệm và thực thi quyền được đưa ra trong hình 9-39.
Giả sử rằng A và B chia sẻ khóa mật KA,B dùng để mã hóa thông điệp giữa 2 người. Sau đó A lần đầu gửi cho B 1 chứng chỉ C = {R,S+proxy} được gắn kèm chữ kỹ Sig(A,C) (và biểu thị lại dưới dạng [R,S+proxy]A ). Không cần mã hóa thông điệp và nó có thể được gửi đi. Chỉ phần riêng tư của mật mã cần phải đựoc mã hóa như KA,B(S+proxy) được chỉ ra trong message 1
A sau đó ủy nhiệm quyền của mình cho B.Theo đó B đưa ra tài liệu ủy nhiệm cho server trong chứng chỉ đã được ký: [R,S+proxy]A – message 2
Note: message 3 ở đây là thông điệp của server gửi cho B. Bằng việc giải mã thông điệp này và gửi lại N (message 4) thì B chứng minh với bên giữ chứng chỉ là B biết mật mã.
Các file đính kèm theo tài liệu này:
- An toàn – An ninh (Security).doc