c8_antoan

Màu nền
Font chữ
Font size
Chiều cao dòng
Chương 8:  An toàn – An ninh.

8.1  Đặt vấn đề.

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

 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 DVhay 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 DVhay 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 DVlà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 HT.

b.      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 HT. 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.

8.1.2  Các vấn đề khi thiết kế.

a.      Điều khiển

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.

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.

Chống user 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 HT 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.

b.      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 HT 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 DVan toàn, an ninh của từng tầng.

Trong một HPT, cơ chế an toàn, an ninh được đặt ở tầng middleware.

c.       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 HPT, các cơ chế này phải tuân theo một ràng buộc an toàn nào đó.

8.1.3  Mật mã

Một cơ chế an toàn, an ninh cơ bản trong HPT đó 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.

Có hai loại HT mật mã: mật mã đối xứng và mật mã bất đối xứng

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

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

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.

Phương pháp sinh khóa của 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.

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

Trong HT 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.

8.2  Kênh an toàn (Secure channels).

8.2.1  Xác thực (Authentification).

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

b.      Xác thực dựa trên trung tâm phân phối khóa.

Nếu HT 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ì HT 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 .

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 )  đó.

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

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

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.

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 TT. Mỗi kênh TT đó đượ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ỏ.

8.2.3  TT nhóm an toàn

a.      TT 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.

b.      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 HPT nhưng đôi khi cũng được dùng để đảm bảo tính tin cậy cho HT.

8.3  Kiểm soát truy nhập (Access Control).

8.3.1  Các khía cạnh tổng quát trong kiểm soát truy cập.

a.      Ma trận kiểm soát truy cập (Access Control Matrix).

Trong ma trận điều khiển truy cập, một hàng biểu diễn cho một chủ thể (subject), một cột biểu diễn cho một đối tượng (object). Gọi ma trận kiểm soát truy nhập là M. M[s,o]: đưa ra danh sách các phép toán mà chủ thể s có thể yêu cầu trên đối tượng o. Khi một chủ thể s gọi một phương thức m của đối tượng o thì monitor sẽ kiểm tra trong danh sách M[s,o], nếu m không có trong danh sách này thì lời triệu gọi bị hủy bỏ.

Thông thường HT phải làm việc với rất nhiều user nên có hàng nghìn chủ thể cần quản lý. Do đó xây dựng một ma trận thực như trên là không hợp lý. Giải pháp đề ra là sử dụng danh sách kiểm soát truy cập.

b.      Danh sách kiểm soát truy cập (Access Control List).

Mỗi một đối tượng sẽ duy trì một danh sách các truy cập hợp lệ của các chủ thể muốn truy cập nó gọi là ACL nhờ đó tránh được sự tồn tại của các entry rỗng như ở ma trận kiểm soát truy nhập.

c.       Miền bảo vệ (Protection Domains).

Với việc sử dụng ACL, tuy đã khắc phục được nhược điểm của ma trận kiểm soát truy nhập nhưng vẫn có kích thước lớn nên đã đưa ra cách sử dụng miền bảo vệ. Miền bảo vệ là một tập các cặp (đối tượng, truy cập hợp lệ), mỗi cặp này sẽ cho ta một đối tượng và các thao tác hợp lệ trên nó. Mỗi một yêu cầu đều thuộc một miền bảo vệ nào đó. Khi một yêu cầu gửi đến, monitor sẽ tìm trong miền bảo vệ tương ứng yêu cầu này.

Để đạt hiệu quả cao hơn, người ta dùng kết hợp miền bảo vệ với việc phân nhóm các đối tượng.

8.3.2  Tường lửa (Firewall).

Firewall dùng để ngăn chặn các luồng không được phép. Firewall có hai loại chính là:

Packet – filtering gateway: loại này hoạt động như một router cho phép hoặc không cho phép gói tin chuyển qua mạng dựa trên địa chỉ nguồn và địa chỉ đích ở phần header của gói tin. Loại này thường dùng để ngăn chặn các gói tin từ ngoài đi vào trong mạng.

Appllication – level gateway: loại firewall này không chỉ kiểm tra header của gói tin gửi đến hay gửi đi mà còn kiểm tra nội dung của gói tin đó. Một ví dụ đặc biệt cho loại này là proxygateway.

8.4  Quản trị an toàn – an ninh (Security management ).

8.4.1  Quản trị khóa.

a.      Thiết lập khóa.

Việc tạo ra khóa bí mật giữa bên truyền và bên nhận được thực hiện như sau:

Bên A và bên B đều tạo ra hai số lớn là n và g -  hai số này có thể được công khai. Bên A sẽ tạo ra một số lớn khác là x, bên B tạo ra số lớn y và giữ bí mật chúng. 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.

b.      Phân phát khóa.

Trong hệ mã mật đối xứng, khóa bí mật tạo ra phải được truyền đi trên kênh mật riêng .

Trong hệ mật mã dùng khóa công khai, khóa công khai phải đảm bảo cùng một cặp với một khóa bí mật. Khóa công khai được truyền đi như một bản rõ trên đường truyền và phải có hỗ trợ xác thực. Khóa bí mật được truyền đi trên một kênh riêng và cũng phải được xác thực.

Thông thường, khóa công khai thường đượcthay bằng một chứng chỉ khóa công khai (public – key certificate). Chứng chỉ này bao gồm một khóa công khai và một xâu định danh để xác định được khóa mật liên kết với nó.

b.      Thời gian tồn tại của chứng chỉ.

Khi cần hủy bỏ một chứng chỉ ta có thể thực hiện theo nhiều phương pháp:

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. Như thế mỗi client phải được cập nhật danh sách này thường xuyên.

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.

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.

8.4.2  Quản trị nhóm an toàn.

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 tham gia JR. 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.

8.4.3  Quản trị ủy quyền (Authorization management )

Sử dụng capability để xác định quyền truy cập tài nguyên của tiến trình chiếm giữ nó. 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

Sự ủy quyền(delegation)

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 HT máy tính và đặc biệt hơn là trong HPT. Ý 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.

Bạn đang đọc truyện trên: TruyenFun.Vip