Bài giảng An toàn cơ sở dữ liệu - Chương 2: Các cơ chế an toàn cơ bản - Trần Thị Lượng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng An toàn cơ sở dữ liệu - Chương 2: Các cơ chế an toàn cơ bản - Trần Thị Lượng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
bai_giang_an_toan_co_so_du_lieu_chuong_2_cac_co_che_an_toan.pdf
Nội dung text: Bài giảng An toàn cơ sở dữ liệu - Chương 2: Các cơ chế an toàn cơ bản - Trần Thị Lượng
- Chương 2 Các cơ chế an toàn cơ bản Giảng viên Trần Thị Lượng
- Mục tiêu Một số cơ chế bảo vệ tài nguyên ở mức hệ điều hành. Các cải tiến đối với cơ chế an toàn cơ bản dành cho hệ điều hành. Thiết kế hệ điều hành an toàn. Chuẩn an toàn DoD. 11/23/2015 2
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào (Fence address) 2.3.2 Tái định vị (relocation) 2.3.3 Bảo vệ dựa vào thanh ghi (bound register) 2.3.4 Phân trang (paging) 2.3.5 Phân đoạn (segmentation) 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 3
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 4
- 2.1 Giới thiệu Hệ điều hành là một chương trình đóng vài trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng máy tính. Mục tiêu của hệ điều hành là cung cấp một môi trường cho phép người sử dụng phát triển và thực hiện các ứng dụng của họ một cách dễ dàng và hiệu quả. Hệ điều hành quản lý tất cả tài nguyên hệ thống (bộ nhớ, các file, thiết bị vào/ra, bộ xử lý) và tối ưu hoá việc sử dụng tài nguyên cho các chương trình ứng dụng khác nhau. 11/23/2015 5
- 2.1 Giới thiệu Các mức trừu tượng của một hệ thống tính toán Các ứng dụng Hệ điều hành Chương trình dịch hợp ngữ Chương trình cơ sở Phần cứng Hình 2.1 Các mức trừu tượng của hệ 11/23/2015 thông máy tính 6
- 2.1 Giới thiệu Phần cứng: bao gồm CPU, bộ nhớ, các thiết bị nhập xuất (là các tài nguyên của máy tính). Chương trình cơ sở (phần mềm hệ thống): đây là phần mềm hệ thống trong ROM được nạp cố định trong bộ nhớ – không thể thay đổi được. Chương trình dịch hợp ngữ (assembler) Hệ điều hành (OS): điều khiển và phối hợp việc sử dụng phần cứng cho những ứng dụng khỏc nhau của nhiều người dùng khỏc nhau. Các ứng dụng. 11/23/2015 7
- 2.1 Giới thiệu Các chức năng chính của hệ điều hành: Quản lý tiến trình và bộ xử lý: Hỗ trợ các tiến trình đồng thời của người dùng và hệ thống Đảm bảo tối đa hiệu năng sử tài nguyên hệ thống Quản lý tài nguyên OS cấp phát các tài nguyên hệ thống như: bộ nhớ, file, thiết bị vào/ra cho ứng dụng OS giải quyết vấn đề xung đột giữa các tiến trình sử dụng chung tài nguyên. 11/23/2015 8
- Vấn đề tương tranh Giả sử 2 tiến trình P1 và P2 cùng chia sẻ một vùng nhớ chung, chứa biến x (lưu thông tin một tài khoản). x=800. 2 tiến trình cùng muốn rút tiền từ tài khoản: If (x – 500 >= 0) If (x – 400 >= 0) x := x - 500 x := x - 400 Kết quả x=? 11/23/2015 9
- 2.1 Giới thiệu Các chức năng chính của hệ điều hành: Giám sát: OS tương tác trực tiếp với các chương trình ứng dụng Hỗ trợ thực hiện các ngôn ngữ ứng dụng khác nhau Kiểm soát các chương trình đang chạy, không cho phép sử dụng trái phép tài nguyên hệ thống Chống can thiệp trái phép vào các vùng nhớ Nhận xột: Hệ điều hành không ngừng phát triển từ một chương trình đơn giản đến các hệ thống phức tạp, hỗ trợ kiến trúc đa nhiệm, đa xử lý, phân tán và xử lý thời gian thực. 11/23/2015 10
- 2.1 Giới thiệu Các chức năng hướng hỗ trợ an toàn của hệ điều hành: Nhận dạng/xác thực người dùng Bảo vệ bộ nhớ Kiểm soát truy nhập vào tài nguyên Kiểm soát luồng Kiểm toán 11/23/2015 11
- Người dùng Quản lý hệ Cấp phát tài Đăng nhập thống file nguyên Nhận dạng/Xác thực Bảo vệ bộ nhớ Kiểm soát truy nhập tài nguyên Thực hiện chương Quản lý vào ra trình Quản lý và phát hiện lỗi Kiểm toán Đăng xuất Điều khiển luồng Các chức năng dịch vụ của OS Các chức năng an toàn của OS 11/23/2015 Hình 2.2 Phiên làm việc của người dùng 12
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 13
- 2.2 Nhận dạng/xác thực người dùng Yêu cầu đối với một hệ thống an toàn là phải nhận dạng chính xác người sử dụng, do đó ta tìm hiểu xem chức năng an toàn nhận dạng/xác thực người dùng của OS thực hiện như thế nào. Xỏc thực là một trong ba yờu cầu bảo vệ: 3A (Authentication – Authorization – Authentication). 11/23/2015 14
- 2.2 Nhận dạng/xác thực người dùng Các hệ thống xác thực dựa vào thông tin người dùng biết Các hệ thống dựa vào mật khẩu Các hệ thống dựa vào hỏi đáp Xác thực dựa vào thẻ từ Các hệ thống xác thực dựa vào đặc điểm của người dùng Các hệ thống nhận dạng qua ảnh Các hệ thống nhận dạng qua vân tay Nhận dạng qua đặc trưng của chữ ký viết tay Các hệ thống nhận dạng qua tiếng nói Các hệ thống nhận dạng qua đặc điểm võng mạc 11/23/2015 15
- 2.2.1. Các hệ thống xác thực dựa vào thông tin người dùng biết Các hệ thống dựa vào mật khẩu: Người dùng được nhận dạng thông qua một chuỗi ký tự bí mật (mật khẩu), chỉ có người dùng và hệ thống biết. Các hệ thống dựa vào hỏi đáp: Người dùng được nhận dạng, thông qua việc trả lời một tập hợp các câu hỏi mà hệ thống đặt ra. Các câu hỏi được đặt riêng cho từng người dùng và chủ yếu dựa vào các hàm toán học. Hệ thống sẽ tính toán các hàm này sau khi nhận được các giá trị đưa vào từ người dùng và so sánh kết quả với nhau. 11/23/2015 16
- 2.2.1. Các hệ thống xác thực dựa vào thông tin người dùng biết Các hệ thống dựa vào hỏi đáp: Các hàm mẫu như sau: Các hàm đa thức: (ví dụ, f(x) = x3+ x2- x + 4): giá trị của biến x do hệ thống cung cấp, người dựng tớnh f(x) và gửi cho hệ thống. Các hàm dựa vào việc biến đổi chuỗi ký tự: ví dụ, f(a1a2a3a4a5) = a4a3a5a2a1. Khi đó người dùng phải gửi lại kết quả biến đổi chuỗi ký tự cho hệ thống. Các hàm dựa vào các thuật toán mật mã đơn giản: ví dụ f(E(x)) = E(D(E(x))2). Hệ thống cung cấp cho người dùng giá trị đã mã hóa E(x), người dùng phải giải mã D(E(x)) sau đó tính hàm bình phương [D(E(x))]2, cuối cùng mã hóa giá trị này E(D(E(x))2). Sau đó người dùng gửi kết quả này tới hệ thống, hệ thống sẽ kiểm tra kết quả này bằng hàm f. 11/23/2015 17
- 2.2.1. Các hệ thống xác thực dựa vào thông tin người dùng biết Các hệ thống xác thực hai lần – bắt tay: hệ thống tự giới thiệu mình với người dùng, còn người dùng tự xác thực ngược trở lại hệ thống. Xác thực hệ thống dựa vào các thông tin chỉ có người dùng biết (ví dụ, ngày, giờ và đoạn chương trình của phiên làm việc cuối). Xác thực người dùng dựa vào mật khẩu. 11/23/2015 18
- 2.2.2 Các hệ thống xác thực dựa vào đặc điểm của người dùng Các hệ thống nhận dạng qua ảnh Các hệ thống nhận dạng qua vân tay Nhận dạng qua đặc trưng của chữ ký viết tay Các hệ thống nhận dạng qua tiếng nói Các hệ thống nhận dạng qua đặc điểm võng mạc 11/23/2015 19
- Tổng quan về các phương pháp xác thực Các nhân tố xác thực: What you know: password, PIN What you have: Key, ID Card Who you are: Fingerpint, Voice, Face, Retinal 11/23/2015 20
- Tổng quan về các phương pháp xác thực Các phương pháp xác thực: Xác thực dựa trên User Name và Password Challenge Handshake Authentication Protocol (CHAP) Kerberos Tokens (Thẻ) Biometrics (Sinh trắc học) Multi-Factor Authentication (Xác thực đa nhân tố) Mutual Authentication (Xác thực lẫn nhau) 11/23/2015 21
- Tổng quan về các phương pháp xác thực Xác thực dựa trên User Name và Password Sự kết hợp của một user name và password là cách xác thực cơ bản nhất. Username và mật khẩu người dùng gõ vào sẽ được so sánh với username và mật khẩu được lưu trong CSDL của hệ thống. Nếu trùng, thì user được xác thực, ngược lại user bị cấm truy nhập. Phương pháp này không bảo mật, vì username và mật khẩu được gửi đi dưới dạng rõ, không được mã hoá nên có thể bị lấy trên đường truyền. 11/23/2015 22
- Tổng quan về các phương pháp xác thực Xác thực bằng phương thức CHAP: (CHAP) cũng là mô hình xác thực dựa trên username/password. Khi user cố gắng log on, server đảm nhiệm vai trò xác thực sẽ gửi một thông điệp thử thách (challenge message) trở lại máy tính User. Máy tính User sẽ phản hồi lại user name và password được mã hóa. Server xác thực sẽ so sánh phiên bản xác thực User được lưu giữ với phiên bản mã hóa vừa nhận, nếu trùng khớp, user sẽ được authenticated. Mật khẩu sẽ được mã hóa dưới dạng băm. Thường được sử dụng khi User logon vào các remote servers của công ty. 11/23/2015 23
- Tổng quan về các phương pháp xác thực Xác thực Kerberos: Dùng một Server trung tâm để kiểm tra việc xác thực user và cấp phát vé thông hành (service tickets) để User có thể truy cập vào tài nguyên. Kerberos là một phương thức rất an toàn trong authentication bởi vì dùng cấp độ mã hóa rất mạnh. Kerberos cũng dựa trên độ chính xác của thời gian xác thực giữa Server và Client Computer. Kerberos là nền tảng xác thực chính của nhiều OS như Unix, Windows. 11/23/2015 24
- Tổng quan về các phương pháp xác thực Tokens Tokens là phương tiện vật lý như các thẻ thông minh (smart cards) hoặc thẻ đeo của nhân viên (ID badges) chứa thông tin xác thực. Tokens có thể lưu trữ số nhận dạng cá nhân-personal identification numbers (PINs), thông tin về user, hoặc passwords. Các thông tin trên token chỉ có thể được đọc và xử lý bởi các thiết bị chuyên dụng, ví dụ như thẻ smart card được đọc bởi đầu đọc smart card gắn trên Computer, sau đó thông tin này được gửi đến Server xác thực. Tokens chứa chuỗi text hoặc giá trị số duy nhất thông 11/23/2015thương mỗi giá trị này chỉ sử dụng một lần. 25
- Tổng quan về các phương pháp xác thực Tokens: Ví dụ về Smart Cards (Thẻ thông minh) Smart cards là ví dụ điển hình về xác thực dựa vào tokens. Một smart card là một thẻ nhựa có gắn một chip máy tính lưu trữ các loại thông tin điện tử khác nhau. Nội dung thông tin của card được đọc với một thiết bị đặc biệt. 11/23/2015 26
- Tổng quan về các phương pháp xác thực Biometrics (Sinh trắc học): Là mô hình xác thực dựa trên đặc điểm sinh học của từng cá nhân, như: Quét dấu vân tay (fingerprint scanner), quét võng mạc mắt (retinal scanner), nhận dạng giọng nói(voice-recognition), nhận dạng khuôn mặt. Vì nhận dạng sinh trắc học hiện rất tốn kém chi phí khi triển khai nên không được chấp nhận rộng rãi như các phương thức xác thực khác. 11/23/2015 27
- Tổng quan về các phương pháp xác thực Biometrics (Sinh trắc học): 11/23/2015 28
- Tổng quan về các phương pháp xác thực Biometrics (Sinh trắc học): 11/23/2015 29
- Tổng quan về các phương pháp xác thực Multi-Factor Authentication Xác thực nhiều nhân tố dựa trên nhiều nhân tố kết hợp, là mô hình xác thực yêu cầu kiểm tra ít nhất 2 nhân tố xác thực.Có thể đó là sự kết hợp của bất cứ nhân tố nào ví dụ như: bạn là ai, bạn có gì chứng minh, và bạn biết gì? Ví dụ: về một Multi-Factor Authentication: Cần phải đưa thẽ nhận dạng vào đầu đọc và cho biết tiếp password là gì 11/23/2015 30
- Tổng quan về các phương pháp xác thực Mutual Authentication: Xác thực lẫn nhau là kỹ thuật bảo mật mà mỗi thành phần tham gia giao tiếp cần kiểm tra lẫn nhau. Trước hết Server chứa tài nguyên kiểm tra “giấy phép truy cập” của client và sau đó client lại kiểm tra “giấy phép cấp tài nguyên” của Server. Điều này giống như khi bạn giao dịch với một Server của ngân hàng, bạn cần kiểm tra Server xem có đúng của ngân hàng đó không hay là một cái bẫy của hacker giăng ra, và ngược lại Server này sẽ kiểm tra lại bạn 11/23/2015 31
- Giới thiệu cơ chế xác thực trong Oracle 11/23/2015 32
- Xác thực dựa vào mật khẩu Mật khẩu là một chuỗi ký tự bí mật (số hoặc chữ), chỉ có người dùng và hệ thống biết, do đó hệ thống có khả năng nhận dạng duy nhất người dùng dựa vào việc xác nhận tính hợp lệ của mật khẩu Các tiêu chuẩn đối với mật khẩu 'bí mật' là: Sử dụng ít nhất 6 ký tự, nên sử dụng các mật khẩu dài. Sử dụng cả số và chữ. Sử dụng cả chữ thường và chữ in hoa. Sử dụng các ký hiệu bàn phím đặc biệt (ví dụ, &,@ và %). Chọn các từ nước ngoài. 11/23/2015 33
- Vấn đề quản lý mật khẩu Mật khẩu được lưu trong một file do OS quản lý => Các modul trong OS đều có thể truy nhập được file mật khẩu. Giải pháp: mã hóa mật khẩu bằng các thuật toán mã hóa, sau đó lưu vào file mật khẩu. Vấn đề: hai người dùng có cùng một mật khẩu => mật khẩu sau khi mã hóa cũng giống nhau 11/23/2015 34
- Kỹ thuật salt (UNIX) Một salt là một số 12 bit được thêm vào mật khẩu. salt là duy nhất với một tiến trình? Salt Mật khẩu Mật khẩu File mật DES Salt mã hóa khẩu 11/23/2015 35
- Kỹ thuật salt (UNIX) Xác thực mật khẩu của người dùng Người dùng gõ mật khẩu Mật khẩu Salt DES mã hóa Mật khẩu File mật mã hóa khẩu So sánh 11/23/2015 36
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 37
- 2.3 Bảo vệ bộ nhớ Bộ nhớ chính là thiết bị lưu trữ duy nhất thông qua đó, CPU có thể trao đổi thông tin với môi trường bên ngoài. Bộ nhớ chính được tổ chức như một mảng một chiều các từ nhớ (word), mỗi từ nhớ có một địa chỉ. Cỏc OS cho phộp đa nhiệm để nõng cao hiệu suất C PU=> nảy sinh nhu cầu chia sẻ bộ nhớ giữa cỏc tiến trỡnh. Vấn đề: Bộ nhớ thỡ hữu hạn cũn cỏc yờu cầu bộ nhớ thỡ vụ hạn. 11/23/2015 38
- 2.3 Bảo vệ bộ nhớ OS chịu trách nhiệm cấp phát vùng nhớ cho các tiến trình yêu cầu, OS phải xét đến: Sự tương ứng giữa địa chỉ logic và địa chỉ vật lý: làm sao để chuyển đổi một đ/c tượng trưng sang đ/c thực? Quản lý bộ nhớ vật lý: làm sao để mở rộng bộ nhớ có sẵn nhằm lưu trữ được nhiều tiến trình đồng thời? Chia sẻ thông tin: làm thế nào để cho phép 2 tiến trình chia sẻ thông tin trong bộ nhớ? Bảo vệ: làm thế nào để ngăn chặn các tiến trình xâm phạm đến vùng nhớ được cấp phát cho các tiến trình khác? 11/23/2015 39
- 2.3 Bảo vệ bộ nhớ Các kiểu cơ chế phần cứng được sử dụng để bảo vệ và chia sẻ bộ nhớ: Địa chỉ rào Tái định vị Các thanh ghi cơ sở/giới hạn Phân trang Phân đoạn 11/23/2015 40
- 11/23/2015 41
- 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 11/23/2015 42
- 2.3.1 Địa chỉ rào Địa chỉ logic - địa chỉ ảo: là tất cả các địa chỉ do bộ xử lý sinh ra. Địa chỉ vật lý: là địa chỉ thực tế mà trình quản lý bộ nhớ nhìn thấy và thao tác. Không gian địa chỉ: là tập hợp tất cả các địa chỉ ảo phát sinh bởi một chương trình. Không gian vật lý: là tập hợp tất cả các địa chỉ vật lý tương ứng với các địa chỉ ảo. MMU (Memory Management Unit): là một cơ chế phần cứng để chuyển đổi địa chỉ ảo thành địa chỉ vật 11/23/2015lý tại thời điểm xử lý.) 43
- 2.3.1 Địa chỉ rào Địa chỉ rào: đánh dấu ranh giới giữa vùng nhớ dành cho hệ điều hành và vùng nhớ cho tiến trình người dùng. Dùng thanh ghi rào để lưu địa chỉ rào. 0 Thanh ghi rào Hệ điều Hệ điều hành hành Giá trị địa Địa chỉ rào chỉ rào Vùng nhớ người dùng Vùng nhớ sẵn dùng 11/23/2015 0xFFF 44
- 2.3.1 Địa chỉ rào Địa chỉ rào (FA) 0 HệHệ đ điềuiều hànhhành FA CPU A>F Vùng nhớ Địa chỉ A Đúng người dùng (A) Sai Vùng nhớ sẵn dùng 0xFFF Lỗi 11/23/2015Truy nhập vào bộ nhớ bằng địa chỉ rào 45
- 2.3.1 Địa chỉ rào Nhận xét: Gi¸ trÞ cña ®Þa chØ rµo cã thÓ ®îc lu trong mét thanh ghi rµo. Khi ®ã, gi¸ trÞ rµo cã thÓ thay ®æi ®éng tuú thuéc vµo sù thay ®æi cña kÝch cì OS, ®ång thêi OS sÏ lu gi¸ trÞ míi cña ®Þa chØ rµo vµo trong thanh ghi. C¸c ®Þa chØ trong ch¬ng tr×nh ngêi dïng ®îc so s¸nh víi gi¸ trÞ lu trong thanh ghi rµo xem cã hîp lÖ hay kh«ng. 11/23/2015 46
- 2.3.1 Địa chỉ rào Ưu, nhược điểm của địa chỉ rào? 11/23/2015 47
- 2.3.1 Địa chỉ rào Ưu điểm: bảo vệ được vùng nhớ của hệ điều hành tránh khỏi sự can thiệp của các tiến trình người dùng. Nhược điểm: Trong hệ đơn chương: chỉ có một tiến trình người dùng => lãng phí CPU. Trong hệ đa chương: đ/c rào không bảo vệ được vùng nhớ của người dùng này với người dùng khác. 11/23/2015 48
- 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 11/23/2015 49
- 2.3.2 Tái định vị Nhắc lại: Hệ thống đa chương với phần vùng cố định: bộ nhớ được chia thành n phân vùng (chú ý là phân vùng vật lý) với kích thước cố định (các phân vùng có thể có kích thước bằng nhau hoặc khác nhau). Các tiến trình có yêu cầu bộ nhớ sẽ được đặt trong hàng đợi, có hai cách tiếp cận để tổ chức hàng đợi: 11/23/2015 50
- 2.3.2 Tái định vị Hệ thống đa chương với phần vùng cố định: Partition 3 500K Partition 4 200K Partition 1 100K Hệ điều hành 11/23/2015 0 51
- 2.3.2 Tái định vị Hệ thống đa chương với phần vùng cố định: Nhiều hàng đợi: Mỗi phân vùng có một hàng đợi tương ứng, một tiến trình sinh ra sẽ được đặt vào trong hàng đợi của phân vùng có kích thước nhỏ nhất nhưng vẫn thỏa mẵn nhu cầu chứa tiến trình đó. => Nhược điểm: Có hàng đợi thì trống, hàng đợi thì đầy khiến nhiều tiến trình phải chờ đợi để cấp phát bộ nhớ. Một hàng đợi: Tất cả các tiến trình được đặt trong một hàng đợi duy nhất, khi có một phân vùng tự do (tự do hoàn toàn cả phân vùng) thì tiến trình đầu tiên trong hàng đợi có kích thước phù hợp sẽ được đặt vào trong 11/23/2015phân vùng đó. 52
- 2.3.2 Tái định vị Hệ thống đa chương với phần vùng cố định: Nhược điểm: Nếu kích thước của tiến trình không vừa đúng bằng (<) kích thước của phân vùng chứa nó thì phần bộ nhớ còn lại trong phân vùng sẽ bị lãng phí. Đây gọi là hiện tượng phân mảnh nội vi (internal fragement). Mức độ đa chương của hệ thống sẽ bị giới hạn bởi số lượng phân vùng. Khi cho phép sự đa chương, cần giải quyết 2 vấn đề: 11/23/2015 53
- 2.3.2 Tái định vị 2 vấn đề đó là T¸i ®Þnh vÞ (relocation) B¶o vÖ c¸c tiÕn tr×nh: Khi cho phÐp sù ®a ch¬ng, cã nhiÒu tiÕn tr×nh ®ång thêi trong bé nhí, do ®ã cÇn ph¶i b¶o vÖ c¸c tiÕn tr×nh khái sù x©m ph¹m lÉn nhau. (V× lóc nµy, mét tiÕn tr×nh cã thÓ t¹o ra c¸c chØ thÞ truy xuÊt ®Õn mét ®Þa chØ bÊt kú trong bé nhí => truy xuÊt ®Õn d÷ liÖu cña tiÕn tr×nh kh¸c, nÕu nh kh«ng cã ph¬ng ph¸p b¶o vÖ). 11/23/2015 54
- 2.3.2 Tái định vị 11/23/2015 55
- 2.3.2 Tái định vị Địa chỉ trong chương trình nguồn là địa chỉ logic, muốn chạy chương trình phải biờn dịch và nạp chương trình vào bộ nhớ => phải chuyển đổi địa chỉ. Tái định vị = chuyển đổi đ/c logic -> đ/c vật lý Ví dụ, nếu chương trình truy xuất đến địa chỉ 100 (địa chỉ logic), và chương trình được nạp vào phân vùng 1 có địa chỉ vật lý bắt đầu là 100K, thì địa chỉ truy xuất thực sự là 100K+100 = địa chỉ vật lý. Trỡnh liờn kết (linker) phải thực hiện nhiệm vụ tỏi định vị chương trỡnh. 11/23/2015 56
- 2.3.2 Tái định vị Như vậy, thực chất tái định vị là việc chuyển đổi từ địa chỉ logic của chương trình sang địa chỉ vật lý, còn gọi là Sự kết buộc địa chỉ. Giả thiết rằng K là giá trị rào, khi đó địa chỉ vật lý của một chương trình sẽ được tính bằng cách cộng K với địa chỉ logic của chương trình đó. 11/23/2015 57
- 2.3.2 Tái định vị Tái định vị có thể thực hiện trong: Thời điểm biên dịch Thời điểm nạp Thời điểm xử lý 11/23/2015 58
- 2.3.2 Tái định vị Thời điểm biên dịch: Nếu tại thời điểm biên dịch, có thể biết vị trí mà chương trình sẽ thường trú trong bộ nhớ (ví dụ chương trình sẽ có địa chỉ bắt đầu trong bộ nhớ chính là K1 - địa chỉ rào), thì trình biên dịch có thể phát sinh ngay mã lệnh thực thi với các địa chỉ tuyệt đối. Trong suốt quá trình biên dịch, địa chỉ trong chương trình là các địa chỉ tuyệt đối = địa chỉ tương đối + K1. Sau đú chương trỡnh nạp, sẽ nạp mó lệnh thực thi này vào vựng nhớ bắt đầu từ K1. Nếu về sau có sự thay đổi vị trí thường trú lúc đầu của chương trình (K1 thay đổi), cần phải biên dịch lại chương trình 11/23/2015 59
- 2.3.2 Tái định vị Thời điểm nạp: Nếu trong quá trình biên dịch chưa biết vị trí thường trú của chương trình trong bộ nhớ, thì trình biên dịch sẽ sinh ra mã lệnh thực thi tương đối (object code) chứa các địa chỉ tương đối. Khi nạp chương trình vào bộ nhớ, những địa chỉ tương đối đó sẽ được chuyển thành các địa chỉ tuyệt đối trong bộ nhớ. Đây được gọi là “tái định vị tĩnh”. Khi có sự thay đổi vị trí lưu trữ tiến trình trong bộ nhớ, chỉ cần nạp lại mà không cần biên dịch lại chương trình. 11/23/2015 60
- 2.3.2 Tái định vị Thời điểm xử lý: Nếu có nhu cầu di chuyển tiến trình từ vùng nhớ này sang vùng nhớ khác trong quá trình xử lý – chạy, thì sự kết buộc địa chỉ cần được thực hiện trong thời gian chạy chương trình. Khi đó cần sử dụng cơ chế phần cứng đặc biệt (MMU). Trong trường hợp này, địa chỉ của chương trình khi được nạp vào bộ nhớ chưa phải địa chỉ tuyệt đối, nó có thể được tái định vị. Và các địa chỉ đó sẽ được chuyển thành địa chỉ tuyệt đối khi chạy chương trình. Đây được gọi là “tái định vị động”. 11/23/2015 61
- 2.3.2 Tái định vị Chú ý: Tái định vị tĩnh: có nghĩa là việc chuyển đổi địa chỉ được diễn ra khi biên dịch hoặc khi nạp chương trình vào bộ nhớ. Tỏi định vị động: có nghĩa là việc chuyển đổi địa chỉ diễn ra khi chạy chương trình. Nếu K là địa chỉ rào (địa chỉ bắt đầu của chương trình trong bộ nhớ chính) thì tái định vị động cho phép K biến đổi trong suốt thời gian chạy chương trình, còn tái định vị tĩnh K là cố định trong suốt thời gian chạy chương trình. 11/23/2015 62
- 2.3.2 Tái định vị Ví dụ về tái định vị động: Thanh ghi rào Hệ điều FA = K Hệ điều hành hành FA CPU PA:=LA+FA PA Địa chỉ Địa chỉ vật logic (LA) Vùng nhớ lý (PA) người dùng Vùng nhớ sẵn dùng 11/23/2015 63
- 2.3.2 Tái định vị Như vậy, thanh ghi rào giúp bảo vệ vùng nhớ của hệ điều hành Thanh ghi rào giúp tái định vị chương trình Vấn đề: chưa bảo vệ được vùng nhớ của tiến trình người dùng? 11/23/2015 64
- 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 11/23/2015 65
- 2.3.3 Bảo vệ dựa vào thanh ghi Bổ sung vào cấu trúc phần cứng của máy tính một thanh ghi cơ sở (base register) và một thanh ghi giới hạn (limit register). Thanh ghi cơ sở: chứa địa chỉ bắt đầu của vùng nhớ cấp phát cho tiến trình. Thanh ghi giới hạn: lưu kích thước của tiến trình. Mỗi địa chỉ bộ nhớ do tiến trình người dùng phát sinh ra đều so sánh với thanh ghi giới hạn, nếu nhỏ hơn nó sẽ được tự động cộng với địa chỉ chứa trong thanh ghi cơ sở để cho ra địa chỉ tuyệt đối trong bộ nhớ. 11/23/2015 66
- 2.3.3 Bảo vệ dựa vào thanh ghi CPU Địa chỉ logic (LA) Thanh ghi Hệ điều hành giới hạn Lỗi Hệ điều hành LA<K K Sai Thanh ghi Vùng nhớ Đúng cơ sở Địa chỉ cơ sở người dùng A (BA) BA Vùng nhớ người dùng B PA PA:= LA+BA BA+K Vùng nhớ Địa chỉ vật người dùng C lý (PA) Vùng nhớ sẵn dùng 11/23/2015 67
- 2.3.3 Bảo vệ dựa vào thanh ghi Ưu điểm: Nhờ sử dụng thanh ghi cơ sở/giới hạn có thể bảo vệ vùng nhớ của tiến trình người dùng. Hỗ trợ tái định vị động: nhờ có thanh ghi cơ sở nên có thể di chuyển chương trình trong bộ nhớ khi chúng xử lý = thay đổi giá trị trong thanh ghi cơ sở. 11/23/2015 68
- 2.3.3 Bảo vệ dựa vào thanh ghi Vấn đề: chưa bảo vệ được vùng nhớ bên trong của tiến trình=> đoạn lệnh có thể bị ghi đè? Thực tế chương trình bao gồm: 1 đoạn lệnh và 1 đoạn dữ liệu. Nếu 2 đoạn này nằm chung một vùng nhớ, giả sử trong một lệnh chứa một biến được gán một giá trị nằm ngoài vùng dữ liệu 11/23/2015 69
- Ví dụ: BA x thuộc vào đoạn lệnh). 0 Hệ điều hành BA Đoạn lệnh người dùng A BA+100 Dữ liệu người dùng A BA+200 11/23/2015 70
- 2.3.3 Bảo vệ dựa vào thanh ghi Giải pháp cho việc đoạn lệnh bị ghi đè: CÇn t¸ch ®o¹n lÖnh vµ ®o¹n d÷ liªu, ®ång thêi ®Þnh râ quyÒn thao t¸c trªn c¸c ®o¹n ®ã. §o¹n lÖnh chỉ ®îc thùc hiÖn thao t¸c ch¹y (execute), ®o¹n d÷ liÖu cã thÓ ®äc/ghi. Dựa vào hai cơ chế: Hai cÆp thanh ghi KiÕn tróc g¾n nh·n 11/23/2015 71
- 2.3.3 Bảo vệ dựa vào thanh ghi Dùng hai cặp thanh ghi: Mỗi đoạn lệnh và đoạn dữ liệu đều có một cặp thanh ghi biên. Thanh ghi cho đoạn lệnh được gán quyền chỉ đọc, thanh ghi cho đoạn dữ liệu gán quyền đọc/ghi. Như vậy, do đoạn lệnh chỉ có thể đọc nên không gây tình trạng ghi đè nữa, đồng thời đoạn lệnh này không thể bị sửa đổi. Nhược điểm: Hạn chế đọc trờn cả một đoạn lệnh 11/23/2015 72
- Dùng hai cặp thanh ghi HệHệ đ iềuđ iềuhành hành Cặp thanh R Đoạn mã ghi biên cho người dùng A đoạn mã A R Đoạn mã R Cặp thanh người dùng B ghi biên cho đoạn mã Cặp thanh R/W R B ghi biên cho Dữ liệu đoạn dữ liệu người dùng A A R/W R/W Cặp thanh Dữ liệu ghi biên cho người dùng B dữ liệu R/W B Đoạn mã người dùng C Dữ liệu 11/23/2015 Người dùng C 73
- 2.3.3 Bảo vệ dựa vào thanh ghi Kiến trúc gắn nhãn: Là một kỹ thuật bảo vệ cho mỗi từ nhớ (word), mỗi địa chỉ bộ nhớ được gắn một nhãn. Nhãn này có thể chứa trong 1 hay hơn 1 bit, để thiết lập các quyền thao tác có thể thực hiện được trên nội dung của địa chỉ đó, mỗi địa chỉ ta có một nhãn tương ứng. Việc gắn nhãn do OS thực hiện theo chế độ đặc quyền. Nhược điểm: Khú thực hiện, tốn cụng. 11/23/2015 74
- Kiến trúc gắn nhãn Nhãn Từ nhớ R 0001 RW 0137 R 0099 Mã: X R = Chỉ đọc RW = đọc/ghi X X = thực hiện X X R 4091 RW 0002 11/23/2015 75
- Tóm lược Trong các cơ chế bảo vệ trên của hệ điều hành ta cấp phát cho tiến trình các vùng nhớ liên tục => có thể gây ra phân mảnh bộ nhớ như cấp phát trong hệ thống đa chương với phân vùng cố định và phân vùng động (cấp phát liên tục). Tiếp theo, ta giới thiệu một số cơ chế bảo vệ cho phép cấp phát cho các tiến trình những vùng nhớ không liên tục (cấp phát không liên tục): Cơ chế phân trang Cơ chế phân đoạn 11/23/2015 76
- 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 11/23/2015 77
- 2.3.4 Phân trang Ý TƯỞNG: PHÂN BỘ NHỚ VẬT LÝ THÀNH CÁC KHỐI CÓ KÍCH THƯỚC CỐ ĐỊNH VÀ BẰNG NHAU, GỌI LÀ KHUNG TRANG (PAGE FRAME). KHÔNG GIAN ĐỊA CHỈ (LOGIC) CŨNG ĐƯỢC CHIA THÀNH CÁC KHỐI CÓ CÙNG KÍCH THƯỚC VỚI KHUNG TRANG, ĐƯỢC GỌI LÀ TRANG (PAGE). KHI CẦN NẠP MỘT TIẾN TRÌNH VÀO BỘ NHỚ ĐỂ XỬ LÝ, CÁC TRANG CỦA TIẾN TRÌNH SẼ ĐƯỢC NẠP VÀO NHỮNG KHUNG TRANG CÒN TRỐNG. MỘT11/23/2015TIẾN TRÌNH CÓ N TRANG SẼ YÊU CẦU N78 KHUNG TRANG TỰ DO.
- 2.3.4 Phân trang Frame 0 Page 0 Page 2 Frame 1 Page 1 Page 0. Frame 2 Page 2 . . . Bộ nhớ logic Page 1 Frame N Bộ nhớ vật lý 11/23/2015 79 M« h×nh bé nhí ph©n trang
- Cơ chế chuyển đổi địa chỉ trong kỹ thuật phân trang Cơ chế phần cứng hỗ trợ chuyển đổi địa chỉ trong kỹ thuật phân trang là bảng trang (page table) Hệ điều hành quản lý trực tiếp bảng trang này. Mỗi phần tử trong bảng trang chứa địa chỉ bắt đầu của một khung trang trong bộ nhớ vật lý. 11/23/2015 80
- Cơ chế chuyển đổi địa chỉ trong kỹ thuật phân trang Cơ chế chuyển đổi địa chỉ được thực hiện như sau: mỗi địa chỉ logic do CPU sinh ra bao gồm 2 phần (Pn, P0) trong đó : Pn là số hiệu trang (trong không gian địa chỉ logic) được dùng như chỉ mục đến phần tử tương ứng trong bảng trang. P0 là địa chỉ tương đối trong trang (trong không gian logic) Giả sử Sp là kích thước của một trang (hay khung trang - thường là 216 byte = 64 KB), khi đó ta có địa chỉ vật lý tương ứng với địa chỉ logic trên là L= PA= Pn *Sp +P0 Kích thước của một trang do phần cứng quy định. 11/23/2015 81
- Cơ chế chuyển đổi địa chỉ trong kỹ thuật phân trang Hệ điều Địa chỉ Địa chỉ vật lý hành logic BA CPU Pn P0 BA P0 PA Pn: số hiệu trang P0: địa chỉ tương đối trong trang Pn Địa chỉ cơ sở (BA) 11/23/2015 Bảng trang 82
- 2.3.4 Phân trang Chia sẻ bộ nhớ trong cơ chế phân trang: Một ưu điểm của cơ chế phân trang là cho phép chia sẻ các trang giữa các tiến trình: Sự chia sẻ được thể hiện ở chỗ có nhiều địa chỉ logic cùng ánh xạ đến một địa chỉ vật lý duy nhất. Có thể áp dụng kỹ thuật này để cho phép có nhiều tiến trình cùng chia sẻ các trang chứa đoạn mã - code chung, với dữ liệu riêng của từng tiến trình đó 11/23/2015 83
- 2.3.4 Phân trang Chia sẻ bộ nhớ trong cơ chế phân trang: code1 0 2 0 data1 code2 1 3 1 code3 2 6 2 code1 data1 3 0 3 code2 P1 Bảng trang P1 4 data2 code1 0 2 5 code2 1 3 6 code3 code3 2 6 7 data2 3 4 Bộ nhớ P 11/23/2015 2 Bảng trang vật lý 84 P2
- 2.3.4 Phân trang Ưu điểm: Kü thuËt ph©n trang lo¹i bá ®îc hiÖn tîng ph©n m¶nh ngo¹i vi mçi khung trang ®Òu cã thÓ ®îc cÊp ph¸t cho mét tiÕn tr×nh nµo ®ã cã yªu cÇu. T¹o ra sù ph©n biÖt gi÷a gãc nh×n cña ngêi dïng vµ bé phËn qu¶n lý bé nhí vËt lý. Gãc nh×n cña ngêi sö dông: mét tiÕn tr×nh cña ngêi dïng nh×n thÊy bé nhí nh lµ mét kh«ng gian liªn tôc, ®ång nhÊt vµ chØ chøa duy nhÊt b¶n th©n tiÕn tr×nh nµy. Gãc nh×n cña bé nhí vËt lý: mét tiÕn tr×nh cña ngêi sö dông ®îc lu tr÷ ph©n t¸n kh¾p bé nhí vËt lý, trong bé nhí vËt lý ®ång thêi còng chøa nh÷ng tiÕn tr×nh kh¸c nhau. 11/23/2015 85
- 2.3.4 Phân trang Nhược điểm: Vẫn còn hiện tượng phân mảnh nội vi. Không phản ánh đúng cách người dùng cảm nhận về bộ nhớ, vì họ nhìn bộ nhớ như một tập các đối tượng: phân đoạn, thư viện, biến toàn cục, stact, vùng nhớ chia sẻ 11/23/2015 86
- 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 11/23/2015 87
- 2.3.5 Phân đoạn Ý TƯỞNG: TA QUAN NIỆM KHÔNG GIAN ĐỊA CHỈ (KHÔNG GIAN LOGIC) LÀ MỘT TẬP CÁC PHÂN ĐOẠN (SEGMENT) – CÁC PHÂN ĐOẠN LÀ NHỮNG PHẦN BỘ NHỚ KÍCH THƯỚC KHÁC NHAU CÓ LIÊN HỆ LOGIC VỚI NHAU. THÔNG THƯỜNG, MỘT CHƯƠNG TRÌNH ĐƯỢC PHÂN TÁCH THÀNH NHIỀU PHÂN ĐOẠN, BAO GỒM CÁC PHÂN ĐOẠN CHO CHƯƠNG TRÌNH CHÍNH, CÁC THỦ TỤC, HÀM, MẢNG, CÁC THƯ VIỆN, STACK BỘ NHỚ TỔ CHỨC THEO KIỂU PHÂN VÙNG ĐỘNG, CÁC PHÂN ĐOẠN ĐƯỢC CẤP PHÁT 11/23/2015ĐỘNG VÀ KHÔNG GIAN CẤP PHÁT CHO TIẾN88 TRÌNH CŨNG KHÔNG LIÊN TỤC
- Cơ chế chuyển đổi địa chỉ Sử dụng bảng phân đoạn (segment table) để ánh xạ địa chỉ logic sang địa chỉ vật lý. Mỗi thành phần trong bảng phân đoạn bao gồm một thanh ghi cơ sở và một thanh ghi giới hạn. Thanh ghi cơ sở lưu trữ địa chỉ vật lý nơi bắt đầu phân đoạn trong bộ nhớ vật lý. Thanh ghi giới hạn lưu chiều dài của phân đoạn. 11/23/2015 89
- Cơ chế chuyển đổi địa chỉ Mỗi địa chỉ logic do CPU sinh ra là một bộ đôi (s, d): s là số hiệu phân đoạn: dùng như chỉ mục tới phần tử tương ứng trong bảng phân đoạn. d địa chỉ tương đối trong phân đoạn: có giá trị trong khoảng từ 0 đến giới hạn chiều dài của phân đoạn. Nếu địa chỉ này hợp lệ sẽ được cộng với giá trị chứa trong thanh ghi cơ sở để phát sinh địa chỉ vật lý. 11/23/2015 90
- Cơ chế chuyển đổi địa chỉ 11/23/2015 91
- 2.3.5 Phân đoạn Chia sẻ phân đoạn : Tương tự như trong cơ chế phân trang, cơ chế phân đoạn cũng cho phép chia sẻ các phân đoạn giữa các tiến trình. Tuy nhiên các tiến trình có thể chia sẻ với nhau từng phần của chương trình (ví dụ: thủ tục, hàm) không nhất thiết phải chia sẻ toàn bộ chương trình như trong trường hợp phân trang. 11/23/2015 92
- 2.3.5 Phân đoạn Chia sẻ phân đoạn : 11/23/2015 93
- 2.3.5 Phân đoạn Ưu điểm: thể hiện được cấu trúc logic của chương trình: thủ tục, chương trình chính, stack, mảng, thư viện Nhược điểm: Còng nh trêng hîp m« h×nh ph©n vïng ®éng, kü thuËt ph©n ®o¹n ph¶i gi¶i quyÕt vÊn ®Ò cÊp ph¸t ®éng. HiÖn tîng ph©n m¶nh ngo¹i vi l¹i xuÊt hiÖn khi c¸c khèi nhí tù do (trong bé nhí vËt lý) ®Òu qu¸ nhá, kh«ng ®ñ ®Ó chøa mét ph©n ®o¹n 11/23/2015(trong bé nhí logic). 94
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 95
- 2.4 Kiểm soát truy nhập tài nguyên Khi tiến trình chạy, chúng có thể yêu cầu đến các tài nguyên của hệ thống như: bộ nhớ, CPU, các file, thiết bị vật lý (nhập, xuất), các chương trình, thủ tục => Để tránh sự can thiệp trái phép tài nguyên giữa các tiến trình, cần phải bảo vệ các tài nguyên này. 11/23/2015 96
- 2.4 Kiểm soát truy nhập tài nguyên Muốn kiểm soát truy nhập vào tài nguyên cần phải nhận dạng tài nguyên đó một cách rõ ràng: Nhận dạng tiến trình (process identification) dựa vào định danh người dùng - người khởi chạy tiến trình. Bộ nhớ được nhận dạng bằng các thanh ghi biên, bảng chuyển đổi (bảng trang, bảng phân đoạn). CPU được nhận biết thông qua phần cứng. File được nhận biết qua tên file. Chương trình, thủ tục được nhận biết qua tên và địa chỉ bắt đầu của nó. Người sử dụng được nhận biết qua quá trình xác thực trong giai đoạn đăng nhập. 11/23/2015 97
- 2.4 Kiểm soát truy nhập tài nguyên Việc bảo vệ tài nguyên cần hai yếu tố: Kiểm tra quyền của tiến trình truy nhập vào tài nguyên. Nguyên tắc đặc quyền tối thiểu: Chỉ cho phép tiến trình truy nhập vào các tài nguyên cần thiết cho nhiệm vụ của nó. 11/23/2015 98
- 2.4.1 Các cơ chế kiểm soát truy nhập Các cơ chế kiểm soát truy nhập có thể được thực hiện theo hai chế độ: Phân cấp truy nhập Ma trận truy nhập. 11/23/2015 99
- 2.4.2 Bảo vệ file Cơ chế dựa vào mật khẩu: Muốn truy nhập vào một file bất kỳ với các thao tác (đọc, ghi, xóa, sửa) đều phải có mật khẩu. Cơ chế này không truy nhập theo định danh người dùng. Mỗi người dùng muốn truy nhập vào một file nào đó cần phải có mật khẩu của file đó. 11/23/2015 100
- 2.4.2 Bảo vệ file Cơ chế dựa vào quyền sở hữu: Thông thường trong nhiều hệ thống, người sử dụng được phân thành 3 loại như sau: Người sở hữu: là người tạo ra một file và có thể định nghĩa các quyền truy nhập của những người sử dụng khác đối với file này. Nhóm user : là tập hợp những người sử dụng có nhu cầu dùng chung file, ví dụ những người làm việc trong cùng dự án, cùng phòng ban. Những người sử dụng khác: tất cả những người sử dụng của hệ thống, trừ người sở hữu và các thành viên 11/23/2015của nhóm. 101
- 2.4.2 Bảo vệ file Cơ chế dựa vào quyền sở hữu: Cơ chế bảo vệ file này được thực hiện trong UNIX: Một file F được gắn chuỗi 9 bit sau: ‘rwx r-x r—‘, nghĩa là người sở hữu file này sẽ được toàn quyền thao tác trên F, những người dùng cùng nhóm với người sở hữu chỉ được đọc, và thực hiện F, còn lại những người dùng khác chỉ được đọc F. 11/23/2015 102
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 103
- 2.6 Sự cách ly (isolation) Sự cách ly là khả năng hạn chế hậu quả của các xâm phạm an toàn có thể xảy ra, bằng cách ngăn chặn chúng, tránh làm ảnh hưởng đến các yếu tố khác của hệ thống. Sự cách ly có thể thực hiện được bằng cách: Tách phần cứng và phần mềm thành các modul hoạt động độc lập. Yêu cầu lặp một số modul phần cứng/phần mềm 11/23/2015 104
- 2.6 Sự cách ly (isolation) Phương pháp dựa vào máy ảo: Nhiều môi trường làm việc khác nhau có thể cùng tồn tại trên một máy tính: các nhóm người dùng thao tác trên các môi trường cách ly của họ. Các bản sao (các máy ảo) của cùng một hệ thống được mô phỏng, mỗi bản sao làm việc trong một môi trường cách ly. Các chương trình của người dùng và các file trong môi trường của họ được cách ly (tách) khỏi những người sử dụng khác. Phần mềm hệ thống và các thiết bị phần cứng được lặp (đuợc sao lại). 11/23/2015 105
- 2.6 Sự cách ly (isolation) Tiến trình Tiến trình Tiến trình Tiến trình Giao diện lập trỡnh Hệ điều OS OS OS hành M¸y ảo PhÇn cøng PhÇn cøng a) Không có máy ảo b) Máy ảo 11/23/2015 106
- 2.6 Sự cách ly (isolation) Ưu điểm của máy ảo: C¸c m«i trêng kh¸c nhau cã thÓ dïng chung mét m¸y, mçi m«i trêng cã c¸c yªu cÇu b¶o vÖ vµ chÝnh s¸ch kiÓm so¸t tµi nguyªn kh¸c nhau. H¹n chÕ c¸c x©m ph¹m an toàn giữa từng chương trình người dùng. 11/23/2015 107
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Tiêu chuẩn DoD 11/23/20152.8 Thiết kế các hệ điều hành an toàn 108
- 2.7 Tiêu chuẩn DoD Việc đánh giá mức độ bảo vệ của một hệ thống là vấn đề nghiên cứu chủ yếu trong an toàn. Do đó các nhà phát triển cũng như những người dùng cuối cần có các tiêu chuẩn và các công cụ đánh giá để có thể chỉ ra mức độ tin cậy của một cơ chế an toàn. Năm 1985, bộ quốc phòng Mỹ đã đưa ra một tiêu chuẩn nhằm hai mục đích để phát triển và đánh giá các hệ thống an toàn, đó là tiêu chuẩn DoD (Department of Defense). 11/23/2015 109
- 2.7 Tiêu chuẩn DoD Tiêu chuẩn DoD cung cấp: Cho người sử dụng: những độ đo (metrics) để đánh giá mức tin cậy của một hệ thống an toàn. Cho các nhà phát triển/nhà cung cấp: một tài liệu hướng dẫn thiết kế (trong đó trình bày các đặc trưng an toàn trong các hệ thống thương mại, Cho các nhà thiết kế: một tài liệu hướng dẫn để đặc tả các yêu cầu an toàn. 11/23/2015 110
- 2.7 Tiêu chuẩn DoD Tiêu chuẩn DoD, hệ thống an toàn có thể được phân theo 4 mức phân cấp (D, C, B, A). Trong mỗi mức phân cấp, lại chia thành các lớp phân cấp. D: mức phõn cấp thấp nhất C: gồm 2 lớp C1, C2 B: gồm 2 lớp B1, B2, B3 A: gồm 1 lớp A1 11/23/2015 111
- 2.7 Tiêu chuẩn DoD Mức D (bảo vệ tối thiểu): Không có lớp con nào, các hệ thống trong mức này sẽ không có bất kỳ một yêu cầu nào cần thiết để phân loại cao hơn. Mức C (bảo vệ tuỳ ý): Các hệ thống trong mức này cung cấp các chính sách kiểm soát truy nhập tùy ý – DAC và các chính sách sử dụng lại đối tượng. Ngoài ra, chúng còn cung cấp các cơ chế nhận dạng/xác thực và kiểm toán. Mức C được chia làm hai lớp: 11/23/2015 112
- 2.7 Tiêu chuẩn DoD Mức C (bảo vệ tuỳ ý): Lớp C1 (bảo vệ an toàn tùy ý): Các hệ thống trong lớp này cung cấp các đặc trưng an toàn cho kiểm soát truy nhập tùy ý (DAC) Nhận dạng/xác thực. Lớp C2 (bảo vệ truy nhập có kiểm soát): C1 Hệ thống phải cú khả năng lưu thông tin về người dùng đơn lẻ và có các cơ chế kiểm toán. 11/23/2015 113
- 2.7 Tiêu chuẩn DoD Mức B (bảo vệ bắt buộc): yêu cầu cơ bản với các hệ thống thuộc mức B là cần có các nhãn an toàn và chính sách kiểm soát truy nhập bắt buộc – MAC. Hầu hết các dữ liệu liên quan trong hệ thống cần phải được gán nhãn. Mức B được chia thành 3 lớp: Lớp B1 (bảo vệ an toàn có gán nhãn): C2 Có thêm các nhãn an toàn và chính sách kiểm soát truy nhập bắt buộc – MAC. 11/23/2015 114
- 2.7 Tiêu chuẩn DoD Lớp B2 (bảo vệ có cấu trúc): B1 Cỏc chính sách kiểm soát truy nhập của lớp B1 sẽ được áp dụng với tất cả chủ thể và đối tượng của hệ thống. Cả nhà quản trị và người dùng đều được cung cấp các cơ chế xác thực, và các công cụ để hỗ trợ việc quản lý cấu hình. Lớp B3 (miền an toàn): B2 Có khả năng chống đột nhập, các đặc tính an toàn cũng phải mạnh hơn (phục hồi, khả năng kiểm toán). Nói chung hệ thống ở lớp B3 phải có khả năng cao chống lại được các truy 11/23/2015nhập trái phép. 115
- 2.7 Tiêu chuẩn DoD Mức A (bảo vệ có kiểm tra): Đặc điểm cơ bản của lớp này là sử dụng các phương pháp hình thức để kiểm tra an toàn cho hệ thống. Mức A được chia thành: Lớp A1 (thiết kế kiểm tra): Tương đương B3 Tuy nhiên, hệ thống thuộc lớp A1 cần sử dụng các kỹ thuật hình thức và phi hình thức để chứng minh tính tương thích giữa đặc tả an toàn mức cao và mô hình chính sách hình thức. 11/23/2015Lớp ngoài A1 (không được mô tả). 116
- Bảng phân loại các mức bảo vệ của DoD Møc D Møc C Møc B Møc A (Bảo vÖ tèi (Bảo vÖ tuú ý) (Bảo vÖ b¾t buéc) (Bảo vÖ cã thiÓu) kiÓm tra) Líp C1 Líp C2 Líp B1 Líp B2 Líp B3 Líp A1 - Kh«ng cã - KiÓm so¸t - C1 - C2 - B1 - B2 - B3 yªu cÇu DAC - Lu TT vÒ user - Nh·n an - Nh·n an - Kh«i phôc - Ph©n phèi tin - NhËn d¹ng - SD l¹i ®èi tîng toµn ®èi toµn - Chèng truy cËy /x¸c - KiÓm to¸n tîng chñ nhËp - SD c¸c kü thùc - KiÓm so¸t thÓ tr¸i thuËt hinh MAC - Nh·n phÐp thøc cho thiÕt bÞ SQLServer - Oracle - Sybase - Oracle (chạy (chạy (chạy trong trong với GEMSOS) Unix) bare - Sybase hard (chạy trong ware) Unix) - Oracle 11/23/2015 117
- Nội dung 2.1 Giới thiệu 2.2 Nhận dạng/xác thực người dùng 2.3 Bảo vệ bộ nhớ 2.3.1 Địa chỉ rào 2.3.2 Tái định vị 2.3.3 Bảo vệ dựa vào thanh ghi 2.3.4 Phân trang 2.3.5 Phân đoạn 2.4 Kiểm soát truy nhập tài nguyên 2.5 Các cơ chế kiểm soát luồng 2.6 Sự cách ly 2.7 Các chuẩn an toàn 11/23/20152.8 Thiết kế các hệ điều hành an toàn 118
- 2.8 Thiết kế các hệ điều hành an toàn Các chương trinh ứng dụng Hệ điều hành Nhân hệ điều hành Phần cứng Các chức năng an toàn Các chức năng an toàn không có nhân an toàn 11/23/2015 119
- 2.8 Thiết kế các hệ điều hành an toàn Nhân – kernel: là thành phần trung tâm của hầu hết các hệ điều hành máy tính. Trách nhiệm của nó là quản lý các tài nguyên hệ thống và quản lý việc giao tiếp giữa các thành phần phần cứng và phần mềm. Nhân cung cấp mức thấp nhất của lớp trừu tượng các tài nguyên (đặc biệt là bộ nhớ, các bộ xử lý và các thiết bị nhập/xuất).) 11/23/2015 120
- Hướng tiếp cận dựa vào nhân Hướng tiếp cận này cố gắng làm giảm kích cỡ và độ phức tạp của các cơ chế an toàn, bằng cách nhóm các chức năng an toàn vào trong nhân an toàn. Khi đó, nhân an toàn sẽ cung cấp một tập tất cả các chức năng an toàn của hệ điều hành cho hệ thống. 11/23/2015 121
- Hướng tiếp cận dựa vào nhân Để thiết kế một hệ điều hành an toàn, thì vấn đề an toàn cần được quan tâm ngay từ giai đoạn thiết kế: Đầu tiên, phát triển một nhân an toàn. Định nghĩa OS căn cứ vào nhân. "Bộ giám sát tham chiếu" (reference monitor) trong nhân kiểm soát tất cả các thao tác truy nhập và thực hiện tất cả các chức năng liên quan đến an toàn. 11/23/2015 122
- Hướng tiếp cận dựa vào nhân Nhân an toàn phải thoả mãn các tính chất sau đây: Tính đầy đủ (completeness): có khả năng dàn xếp tất cả các truy nhập vào thông tin hệ thống. Tính cách ly (isolation): nhân an toàn phải bảo đảm khả năng chống can thiệp. Khả năng có thể kiểm tra (verifiability): mã lệnh của nhân có thể được kiểm tra để chứng tỏ rằng nó đã thực hiện đầy đủ các yêu cầu và chính sách an toàn (có trong mô hình an toàn). 11/23/2015 123
- Kiến trúc một OS dựa vào nhân Phần hệ điều hành bên ngoài nhân được gọi là 'giám sát viên' (supervisor): có nhiệm vụ cung cấp các dịch vụ người dùng hoặc các chức năng không liên quan đến an toàn Một OS dựa vào nhân an toàn có cấu trúc tầng và các tầng của nó tương ứng với các miền thực hiện (execution domains) sau: Nhân an toàn Giám sát viên Các ứng dụng (hình sau minh hoạ cấu trúc của một OS 11/23/2015dựa vào nhân). 124
- Kiến trúc một OS dựa vào nhân Người dùng Người dùng Người dùng Giao diện nhân ứng dụng Giám sát viên Nhân Giao diện OS an toàn Các chủ thể tin cậy Giao diện người dùng 11/23/2015 125
- 2.8 Thiết kế các hệ điều hành an toàn Thiết kế nhân: sö dông c¸c kü thuËt ®Æc t¶ h×nh thøc (formal specification techniques): Møc ®Æc t¶ h×nh thøc cao nhÊt lµ m« h×nh an toµn: ®Æc t¶ giao diÖn nh©n/OS. §Æc t¶ chi tiÕt c¸c chøc n¨ng cña nh©n. §Æc t¶ m· lÖnh cña nh©n ®îc viÕt trong mét ng«n ng÷ bËc cao. 11/23/2015 126
- 2.8 Thiết kế các hệ điều hành an toàn Mô hinh chính sách an toàn Đặc tả kiÓm tra m« hinh Đặc tả møc cao cña giao diÖn nh©n Phần trinh diễn của các mức trung gian tương ứng Đặc tả mức thấp Thực hiện kiểm tra đặc tả Thực hiện nhân trong ngôn ngữ bậc cao 11/23/2015Độ chi tiết của đặc tả hình thức trong thiết kế nhân 127
- Thuận lợi và khó khăn của việc thiết kế OS dựa vào nhân an toàn Thuận lợi: Cách ly và tách rời: Các cơ chế an toàn được cách ly khỏi OS và không gian của người dùng. Khả năng bảo vệ chống lại các xâm nhập hệ thống/người dùng cao hơn. Kích cỡ giảm và có khả năng kiểm tra được: Nhân có kích cỡ nhỏ và chỉ có các chức năng an toàn, do vậy có thể kiểm tra được nó. Khả năng có thể sửa đổi được: có thể thực hiện các thay đổi trong các cơ chế an toàn và kiểm tra chúng một cách dễ dàng. Khả năng dàn xếp hoàn toàn: Mọi truy nhập phải tuân theo các kiểm soát của nhân an toàn. 11/23/2015 128
- Thuận lợi và khó khăn của việc thiết kế OS dựa vào nhân an toàn Khó khăn: Giảm hiệu năng hệ thống: đặc biệt khi sử dụng phần cứng không thích hợp. Hiệu năng của hệ thống có thể giảm xuống, khi nhân bổ sung thêm một mức trung gian giữa các chương trình của người dùng và tài nguyên của OS. Khó để sửa đổi nhân: bởi vì những thay đổi nhỏ cũng có thể làm nó hoạt động không đúng Khó để thực hiện nhân có kích cỡ nhỏ: vì khó có thể tách các chức năng an toàn (thường giữa các chức năng an toàn và chức năng không phải an toàn luôn có những phụ thuộc, liên hệ với nhau). Ngoài ra, để thiết kế nhân an toàn cần một mức đặc tả hình thức chính xác và cần tập các yêu cầu bảo vệ hạn chế. 11/23/2015 129
- 2.8 Thiết kế các hệ điều hành an toàn Một số ví dụ về OS an toàn dựa vào nhân như: UCLA Secure UNIX Kernelized Secure Operating System (KSOS) Secure Xenix Những hệ điều hành này được thiết kế để mở rộng các cơ chế bảo vệ cơ bản của UNIX (Bach 1986, Bunch 1987), VAX Security Kernel. 11/23/2015 130
- 11/23/2015 131