Giới thiệu về bảo mật trong hệ điều hành | Bài tập lớn học phần Hệ điều hành | Trường Đại học Phenikaa

Hệ điều hành (Operating System - OS) là một phần mềm hệ thống cực kỳ quan trọng, đóng vai trò như là một trung gian không thể thiếu giữa người dùng máy tính và phần cứng của máy. Có thể nói, hệ điều hành là trái tim của mọi hệ thống máy tính, nó không chỉ quản lý và điều phối việc sử dụng các tài nguyên phần cứng như bộ vi xử lý (CPU), bộ nhớ RAM, ổ cứng, thiết bị nhập/xuất và các thành phần phần cứng khác, mà còn cung cấp một giao diện người dùng thân thiện, qua đó cho phép người dùng và các ứng dụng phần mềm tương tác với máy tính một cách mượt mà và hiệu quả. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.

TRƯỜNG ĐẠI HỌC PHENIKAA
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
HỆ ĐIỀU HÀNH
GIỚI THIỆU VỀ BẢO MẬT TRONG HỆ ĐIỀU HÀNH
Giảng viên hướng dẫn: Trần Đăng Hoan
Nhóm 24 - Hệ điều hành-1-2-23(N07)
Sinh viên thực hiện: Bùi Việt Quang (21010614)
Nguyễn Văn Khải (21011609)
Ngành/ chuyên ngành: Công nghệ thông tin
Hà Nội, tháng 03 năm 2024
1
LỜI CẢM ƠN
Chúng em xin cảm ơn Thầy Trần Đăng Hoan đã tận tình giảng dạy và hướng dẫn,
giúp đỡ chúng em hoàn thành báo cáo bài tập lớn môn hệ điều hành về đề tài
“ Giới thiệu về bảo mật trong hệ điều hành”
2
MỤC LỤC
LỜI MỞ ĐẦU ........................................................................................................ 3
PHẦN I: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ....................................................... 4
HỆ ĐIỀU HÀNH LÀ GÌ .................................................................................... 4
1. THÀNH PHẦN CHÍNH CỦA HỆ ĐIỀU HÀNH - OPERATINGSYSTEM
........................................................................................................................ 4
2. NHỮNG LOẠI HỆ ĐIỀU HÀNH (OS) .................................................... 5
3. CÁC CHỨC NĂNG CƠ BẢN CỦA HỆ ĐIỀU HÀNH ............................ 6
4. MỤC TIÊU NHIỆM VỤ CỦA HỆ ĐIỀU HÀNH (OS) ............................ 7
PHẦN II : GIỚI THIỆU VỀ BẢO MẬT HỆ ĐIỀU HÀNH (SECURITY -INTRO)
................................................................................................................................ 9
CHƯƠNG 1: GIỚI THIỆU CHUNG ................................................................. 9
1. Bảo mật trong hệ điều hành là gì ? ............................................................ 9
2. Tại sao bảo mật hệ điều hành lại quan trọng ? ........................................... 9
3. Góc độ và thách thức của bảo mật hệ điều hành ...................................... 10
CHƯƠNG 2: CẦN LÀM GÌ ĐỂ BẢO MẬT HỆ ĐIỀU HÀNH BẢO VỆMÁY
TÍNH TỐT NHẤT ........................................................................................... 11
CHƯƠNG 3: MỤC TIÊU VÀ CHÍNH SÁCH BẢO MẬT............................. 12
1. Mục tiêu bảo mật cơ bản .......................................................................... 12
2. Một số khía cạnh khác của bảo mật hệ điều hành ................................... 13
3. Mục tiêu của bảo mật hệ điều hành ................................................................. 13
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG BẢO MẬT HỆ ĐIỀU HÀNH ........... 14
CHƯƠNG 5: KHÁI NIỆM CƠ BẢN VỀ BẢO MẬT HỆ ĐIỀU HÀNH ....... 16
1. Khái niệm ................................................................................................. 16
2. Xử lý quy trình và bảo mật ...................................................................... 17
3. Lời gọi hệ thống trong hệ điều hành ........................................................ 17
CHƯƠNG 6: TỔNG KẾT ............................................................................... 18
PHẦN III: KẾT LUẬN ........................................................................................ 19
3
LỜI MỞ ĐẦU
Trong thời đại thông tin số hiện nay, hệ điều hành không chỉ giữ vai trò là nền tảng
bản cho mọi hoạt động của thiết bị điện tử, từ máy tính nhân, điện thoại thông
minh, đến các hệ thống máy chủ quy mô lớn, mà còn là yếu tố quyết định đến khả
năng bảo mật thông tin trong kỷ nguyên kỹ thuật số. Hệ điều hành quản lý và điều
phối mọi hoạt động của phần cứng, cung cấp giao diện người dùng trực quan, đồng
thời làm cầu nối cho các ứng dụng phần mềm để thực thi các tác vụ. Điều này đòi
hỏi hệ điều hành phải được thiết kế với khả năng đảm bảo an toàn, bảo mật thông
tin và dữ liệu trước sự ngày càng phát triển của các mối đe dọa an ninh mạng.
Trong bối cảnh phát triển nhanh chóng của công nghệ thông tin truyền thông,
cùng với đó sự gia tăng không ngừng của các mối đe dọa mạng, việc đảm bảo
an ninh cho hệ điều hành đã trở thành một trong những ưu tiên hàng đầu. Các cuộc
tấn công mạng ngày càng trở nên tinh vi phức tạp hơn, từ việc lợi dụng các lỗ
hổng bảo mật nhỏ nhất cho đến việc triển khai các chiến dịch tấn công mục tiêu,
đòi hỏi các hệ điều hành không chỉ cần cung cấp các tính năng tiên tiến còn
phải bảo vệ người dùng trước mọi nguy cơ tiềm ẩn.
Đề tài giới thiệu bảo mật trong hệ điều hành sẽ cung cấp một cái nhìn toàn diện về
cấu trúc hoạt động của hệ điều hành, đồng thời đi sâu vào các khía cạnh bảo
mật quan trọng như quản lý quyền truy cập, cơ chế mã hóa dữ liệu, cách thức phát
hiện và ngăn chặn phần mềm độc hại, cũng như các chiến lược cập nhật và vá lỗi
bảo mật.
4
PHẦN I: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH
HỆ ĐIỀU HÀNH LÀ GÌ
Hệ điều hành (Operating System - OS) một phần mềm hệ thống cực kỳ quan
trọng, đóng vai trò như một trung gian không thể thiếu giữa người dùng máy
tính phần cứng của máy. thể nói, hệ điều hành trái tim của mọi hệ thống
máy tính, không chỉ quản điều phối việc sử dụng các tài nguyên phần cứng
như bộ vi xử lý (CPU), bộ nhớ RAM, ổ cứng, thiết bị nhập/xuất và các thành phần
phần cứng khác, mà còn cung cấp một giao diện người dùng thân thiện, qua đó cho
phép người dùng các ứng dụng phần mềm tương tác với máy tính một cách
mượt mà và hiệu quả.
Hệ điều hành vai trò to lớn trong việc định hình trải nghiệm sử dụng máy tính
của người dùng. Nó giúp đơn giản a quá trình tương tác với phần cứng phức tạp,
bằng cách cung cấp một bộ giao diện lập trình ứng dụng (API) cho các nhà phát
triển phần mềm, giúp họ tạo ra các ứng dụng thể chạy trên nền tảng đó không
cần phải quan tâm đến chi tiết cụ thể của phần cứng.
Bên cạnh việc quản tài nguyên phần cứng, hệ điều hành còn trách nhiệm quản
cấp phát bộ nhớ, quản tập tin, quản quyền truy cập bảo mật, cũng
như giám sát việc thực thi của các chương trình. Qua đó, đảm bảo rằng mỗi ứng
dụng dịch vụ được cấp phát một lượng tài nguyên phù hợp, các quy trình
không xâm phạm lẫn nhau, giữ cho hệ thống ổn định và an toàn.
Một trong những đặc điểm quan trọng của hệ điều hành khả năng đa nhiệm
đa người dùng, cho phép nhiều chương trình và nhiều người dùng cùng tương tác
với máy tính mà không ảnh hưởng đến hiệu suất hay bảo mật của nhau. Điều này
được thực hiện thông qua việc phân chia thời gian CPU một cách thông minh
cấp phát bộ nhớ độc lập cho từng quy trình.
1. THÀNH PHẦN CHÍNH CỦA HỆ ĐIỀU HÀNH - OPERATING SYSTEM
Hệ điều hành (Operating System - OS) một phần mềm hệ thống phức tạp, bao
gồm nhiều tính năng và thành phần khác nhau, đóng vai trò quan trọng trong việc
quản phần cứng phần mềm của máy tính. Mặc sự khác biệt về chức
năng và thiết kế giữa các hệ điều hành, ba thành phần chính sau đây thường được
xem là nền tảng cốt lõi của hầu hết các hệ điều hành hiện đại:
Kernel (Nhân Hệ Điều Hành): Nhân hệ điều hành, hay Kernel, trái tim của bất
kỳ hệ điều hành nào, chịu trách nhiệm quản mức độ thấp nhất của các thiết bị
phần cứng. Nó làm việc ở tầngbản nhất, cung cấp các dịch vụ cơ bản như quản
5
lý bộ nhớ, quản lý quy trình và luồng, điều phối tác vụ, và điều khiển truy cập đến
phần cứng. Kernel đóng vai trò quyết định trong việc đảm bảo hiệu suất, ổn định
an ninh của hệ thống bằng cách giới hạn truy cập trực tiếp vào phần cứng
quản lý các tài nguyên một cách hiệu quả, giúp các ứng dụng và dịch vụ hệ thống
hoạt động mà không gây xung đột lẫn nhau.
API (Giao Diện Lập Trình Ứng Dụng): API, viết tắt của Application Programming
Interface, là một tập hợp các quy định và công cụ cho việc xây dựng phần mềm
ứng dụng. Trong bối cảnh của hệ điều hành, API cầu nối giữa phần mềm ứng
dụng và kernel của hệ điều hành, cho phép các nhà phát triển viết mã để tương tác
với chức năng cốt lõi của hệ điều hành không cần phải giao tiếp trực tiếp với
phần cứng. Điều này làm cho việc phát triển ứng dụng trở nên dễ dàng mạnh
mẽ hơn, các API cung cấp một tập hợp các "khối xây dựng" sẵn có, giúp tiết
kiệm thời gian và công sức khi xây dựng các chức năng mới.
Giao Diện Người Dùng (User Interface - UI): Giao diện người dùng của hệ điều
hành phần người dùng tương tác trực tiếp, bao gồm cả giao diện đồ họa (GUI
- Graphical User Interface) giao diện dòng lệnh (CLI - Command Line Interface).
GUI cung cấp một cách trực quan để người dùng giao tiếp với máy tính thông qua
việc sử dụng các biểu tượng đồ họa, cửa sổ, menu, trong khi CLI cho phép người
dùng thực thi các lệnh thông qua việc nhập văn bản. Cả hai loại giao diện này đều
những ưu nhược điểm riêng, tùy thuộc vào nhu cầu kỹ năng của người
dùng. Một giao diện người dùng tốt không chỉ cần dễ sử dụng và trực quan mà còn
cần phản hồi nhanh chóng và cung cấp thông tin hữu ích cho người dùng, từ đó tối
ưu hóa trải nghiệm người dùng.
2. NHỮNG LOẠI HỆ ĐIỀU HÀNH (OS)
Trong thế giới công nghệ đa dạng và phát triển không ngừng như hiện nay, hệ điều
hành được phân loại dựa trên các tiêu chí như khả năng hỗ trợ nhiều người dùng,
khả năng đa nhiệm, khả năng đa luồng khả năng xử trong thời gian thực.
Dưới đây là một cái nhìn sâu hơn về các loại hệ điều hành trên:
Multi-user (Nhiều người dùng): Hệ thống hệ điều hành multi-user được thiết kế để
cho phép nhiều người dùng truy cập sử dụng máy tính cùng một lúc, thường
qua mạng. Điều này đòi hỏi khnăng quản tài khoản người dùng, quyền truy
cập, cách ly dữ liệu giữa các người dùng để đảm bảo an toàn bảo mật. Các
hệ điều hành như UNIX các phiên bản của (bao gồm Linux), cũng như
Windows Server, là ví dụ của loại hệ điều hành này. Chúng được thiết kế để phục
vụ hàng trăm hoặc thậm chí hàng ngàn người dùng cùng một lúc, từ các vị trí địa
lý khác nhau.
6
Multitasking (Đa nhiệm): Hệ điều hành đa nhiệm cho phép nhiều chương trình
hoặc ứng dụng chạy đồng thời trên một máy tính. Điều này được thực hiện thông
qua việc chia sẻ tài nguyên máy tính (như CPU, bộ nhớ) giữa các chương trình
đang chạy, thường xuyên chuyển đổi giữa chúng để cung cấp ấn tượng về việc
chúng đang chạy đồng thời. Các hệ điều hành hiện đại như Windows, macOS,
Linux, và các phiên bản của Unix đều hỗ trợ đa nhiệm.
Multithreading (Đa luồng): Multithreading là một dạng đặc biệt của multitasking,
cho phép các phần khác nhau (gọi là "luồng") của một chương trình duy nhất chạy
đồng thời. Điều này giúp tăng hiệu suất ứng dụng bằng cách tận dụng tối đa khả
năng xử của CPU, đặc biệt trên các hệ thống đa lõi. Đa luồng được hỗ trợ
rộng rãi trong các hệ điều hành hiện đại và là một công cụ quan trọng cho việc phát
triển phần mềm hiệu quả.
Real-time (Thời gian thực): Hệ điều hành thời gian thực (RTOS) được thiết kế để
phản hồi các yêu cầu đầu vào trong một khoảng thời gian cực kỳ ngắn, gần như
tức thì. Điều này rất quan trọng trong các ứng dụng sự chậm trễ không thể chấp
nhận được, như hệ thống kiểm soát công nghiệp, hệ thống y tế, hệ thống điều
khiển bay. RTOS đảm bảo rằng các tác vụ quan trọng được xử theo thời gian
biểu dự kiến, giúp hệ thống duy trì tính nhất quán và đáng tin cậy.
3. CÁC CHỨC NĂNG CƠ BẢN CỦA HỆ ĐIỀU HÀNH
Các chức năng bản của hệ điều hành (Operating System - OS) rất đa dạng
phức tạp, phản ánh vai trò của như trung tâm điều phối tất cả các hoạt động
trong máy tính. Dưới đây là một cái nhìn sâu hơn vào các chức năng chính mà hệ
điều hành thực hiện:
Quản tài nguyên: Hệ điều hành trách nhiệm cao nhất trong việc quản các
tài nguyên phần cứng của máy tính. Điều này bao gồm việc phân phối và theo dõi
việc sử dụng bộ vi xử lý (CPU), bộ nhớ (RAM), thiết bị lưu trữ (như cứng và
SSD), cũng như các thiết bị nhập/xuất như bàn phím, chuột, màn hình, và máy in.
Hệ điều hành phải đảm bảo rằng tất cả các ứng dụng dịch vụ đang chạy trên
máy tính có thể truy cập vào các tài nguyên này một cách hiệu quả, công bằng và
không gây xung đột với nhau.
Quản tập tin: Hệ thống tập tin là một phần không thể thiếu của hệ điều hành, cho
phép lưu trữ, tìm kiếm, truy cập, và quản lý dữ liệu trên các thiết bị lưu trữ. Các hệ
thống tập tin khác nhau (như NTFS, FAT32, ext4, v.v.) cung cấp cơ chế để tổ chức
7
dữ liệu trong các tập tin thư mục, giúp người dùng ứng dụng dễ dàng truy
cập và quản lý thông tin.
Quản lý quy trình và luồng: Quy trình là một chương trình đang chạy, và luồng là
một phần của quy trình có thể thực thi độc lập. Hệ điều hành quản lý việc tạo, lên
lịch và kết thúc quy trình và luồng để đảm bảo rằng mỗi ứng dụng được cung cấp
thời gian CPU cần thiết để thực hiện tác vụ của mình. Điều này bao gồm cả việc
phân chia thời gian CPU giữa các quy trình và ưu tiên các tác vụ quan trọng.
Quản lý bộ nhớ: Bộ nhớ động (RAM) là một nguồn tài nguyên hạn chế, và hệ điều
hành phải quản lý việc phân bổ bộ nhớ này giữa các quy trình một cách hiệu quả.
Điều này bao gồm việc phân chia bộ nhớ cho các ứng dụng đang yêu cầu, cũng
như giải phóng bộ nhớ khi không còn được sử dụng. Hệ điều hành cũng thực
hiện các kỹ thuật như paging và swapping để tối ưu hóa việc sử dụng bộ nhớ.
Giao diện người dùng: Hệ điều hành cung cấp giao diện người dùng (UI) để người
dùng tương tác với máy tính. Điều này thể dạng dòng lệnh (CLI) cho phép
nhập các lệnh văn bản, hoặc giao diện đồ họa người dùng (GUI) với các biểu tượng
đồ họa và cửa sổ. UI giúp người dùng thực hiện các tác vụ một cách trực quan và
dễ dàng.
Quản bảo mật quyền truy cập: Bảo mật một trong những nhiệm vụ quan
trọng nhất của hệ điều hành, bao gồm việc bảo vệ thông tin dữ liệu trước các
mối đe dọa và truy cập trái phép. Hệ điều hành quản lý tài khoản người dùng, mật
khẩu, quyền truy cập vào tệp thư mục, thực hiện các chế hóa để bảo
vệ dữ liệu. Điều này đảm bảo rằng chỉ những người dùng được ủy quyền mới
thể truy cập vào thông tin nhạy cảm và các tài nguyên hệ thống.
4. MỤC TIÊU NHIỆM VỤ CỦA HỆ ĐIỀU HÀNH (OS)
Hệ điều hành đóng vai trò quan trọng trong việc cung cấp một môi trường để các
ứng dụng thể chạy trên máy tính, cũng như quản hiệu quả các tài nguyên phần
cứng và phần mềm của hệ thống. Dưới đây là mục tiêu và nhiệm vụ chính của hệ
điều hành:
Thực hiện các thao tác bản: Hệ điều hành thực hiện các thao tác bản như đọc,
viết, và quản lý dữ liệu trong kho dữ liệu cùng hệ thống tập tin, giúp cho việc truy
cập và lưu trữ dữ liệu được dễ dàng và hiệu quả.
8
Quản phần cứng: OS hỗ trợ điều khiển quản phần cứng, giúp phần cứng
đạt hiệu suất cao nhất. Điều này bao gồm việc quản CPU, bộ nhớ, thiết bị lưu
trữ, và thiết bị nhập/xuất.
Cung cấp hệ thống lệnh: Hệ điều hành cung cấp một bộ lệnh cơ bản cho việc điều
hành máy, cho phép người dùng các ứng dụng thực hiện các tác vụ một cách
linh hoạt và mạnh mẽ.
Cung ứng giao diện người dùng: OS cung cấp giao diện người dùng, dạng
dòng lệnh (CLI) hay giao diện đồ họa (GUI), để hỗ trợ người dùng các ứng dụng
trong việc tương tác với máy tính một cách thuận tiện.
Tăng cường tiện ích sử dụng: Hệ điều hành làm cho hệ thống máy tính dễ sử dụng
hiệu quả hơn, giúp người dùng tiết kiệm thời gian nâng cao năng suất làm
việc.
Ẩn chi tiết phần cứng: OS giấu đi các chi tiết phức tạp của phần cứng từ người
dùng, giúp họ tập trung vào công việc không cần lo lắng về cách thức hoạt động
của phần cứng.
Cải thiện trải nghiệm người dùng: Hệ điều hành cung cấp một giao diện dễ sử dụng,
giúp cải thiện trải nghiệm tổng thể trên hệ thống máy tính.
Làm trung gian giữa phần cứng và người dùng: OS hoạt động như một trung gian,
giúp người dùng dễ dàng truy cập sử dụng các tài nguyên máy tính không
cần hiểu biết sâu về công nghệ.
Quản lý tài nguyên: Hệ điều hành quản lý tài nguyên của hệ thống, đảm bảo sự
phân phối và sử dụng hiệu quả các nguồn lực như CPU, bộ nhớ, và thiết bị lưu
trữ.
Giám sát sử dụng tài nguyên: OS theo dõi những người chương trình đang sử
dụng tài nguyên, giải quyết xung đột và đảm bảo sự công bằng trong việc phân bổ
tài nguyên.
Cung cấp chia sẻ tài nguyên: Hệ điều hành cung cấp các tài nguyên cần thiết
cho người dùng ứng dụng, đồng thời hỗ trợ chia sẻ tài nguyên một cách công
bằng và hiệu quả giữa các quy trình.
9
Những mục tiêu nhiệm vụ này phản ánh sự đa dạng phức tạp của các chức
năng mà hệ điều hành cần thực hiện để đảm bảo hoạt động ổn định hiệu quả của
hệ thống máy tính.
PHẦN II : GIỚI THIỆU VỀ BẢO MẬT HỆ ĐIỀU HÀNH
(SECURITY - INTRO)
CHƯƠNG 1: GIỚI THIỆU CHUNG
1. Bảo mật trong hệ điều hành là gì ?
Bảo mật của các hệ thống máy tính là một chủ đề cực kỳ quan trọng, và tầm quan
trọng của nó chỉ ngày càng tăng lên. Rất nhiều tiền bạc đã bị mất và cuộc sống của
nhiều người đã bị ảnh hưởng khi việc bảo mật máy tính thất bại. Các cuộc tấn công
vào hệ thống máy tính đã trở nên phổ biến đến mức gần như không thể tránh khỏi
trong hầu hết mọi tình huống khi thực hiện việc tính toán. Nói chung, tất cả các
thành phần của một hệ thống máy tính có thể bị tấn công, và lỗi trong bất kỳ thành
phần nào trong số chúng cũng có thể tạo cơ hội cho kẻ tấn công thực hiện điều gì
đó chúng ta muốn ngăn chặn. Nhưng hệ điều hành đặc biệt quan trọng từ góc độ
bảo mật.
2. Tại sao bảo mật hệ điều hành lại quan trọng ?
Đầu tiên, hầu hết mọi thứ đều chạy trên hệ điều hành. Theo quy tắc, nếu phần mềm
đang chạy trên hệ điều hành, một phần mềm trung gian, hay thứ khác, thì
không thực sự an toàn, thứ nằm phía trên nó cũng sẽ không an toàn. Đó giống như
xây một ngôi nhà trên cát. Chúng ta có thể xây một cấu trúc vững chãi, nhưng một
trận lụt vẫn thể cuốn trôi sở phía dưới ngôi nhà , phá hủy hoàn toàn bất
chấp sự cẩn thận trong việc xây dựng. Tương tự, ứng dụng có thể không có lỗi bảo
mật nào của riêng nó, nhưng nếu kẻ tấn công có thể lợi dụng phần mềm phía dưới
để đánh cắp thông tin của, làm sập chương trình, hoặc gây hại theo cách khác, nỗ
lực trong việc bảo vệ mã của mình có thể trở nên vô ích.
Điểm này đặc biệt quan trọng đối với hệ điều hành. Chúng ta thể không quan
tâm đến an ninh của một máy chủ web cụ thể hoặc hệ thống sở dữ liệu nếu
không chạy phần mềm đó, và có thể không quan tâm đến an ninh của một nền tảng
trung gian nào đó mà không sử dụng, nhưng mọi người đều sử dụng hệ điều hành,
tương đối ít lựa chọn để chạy. Do đó, lỗi bảo mật trong một hệ điều hành,
đặc biệt một hệ điều hành được sử dụng rộng rãi, ảnh hưởng lớn đến nhiều
người dùng và nhiều phần mềm.
10
do khác khiến an ninh hệ điều hành rất quan trọng là cuối cùng tất cả phần mềm
của chúng ta đều dựa vào sự hoạt động đúng đắn của phần cứng cơ bản: bộ xử lý,
bộ nhớ và các thiết bị ngoại vi và hệ điều hành quyền kiểm soát cuối cùng đối
với những tài nguyên phần cứng có trong máy tính.
Một thách thức khác trong việc bảo mật hệ điều hành phần lớn hệ điều hành
được thiết kế để hỗ trợ nhiều quy trình cùng một lúc. nhiều chế trong hệ điều
hành nhằm phân chia các quy trình khỏi nhau bảo vệ các phần cứng chia sẻ khỏi
việc bị sử dụng theo cách làm ảnh hưởng đến các quy trình khác. Nếu mọi quy
trình đều thể được tin tưởng để làm bất cứ điều muốn với bất kỳ tài nguyên
phần cứng nào bất kỳ mảnh dữ liệu nào trên máy không làm hại đến quy
trình khác, việc bảo mật hệ thống sẽ dễ dàng hơn nhiều. Tuy nhiên, chúng ta thường
không tin tưởng mọi thứ một cách tuyệt đối. Khi tải xuống chạy một đoạn
từ một trang web chưa từng truy cập trước đây, chúng ta thực sự muốn
thể xóa mọi tệp từ đĩa , kết thúc tất cả các quy trình khác , bắt đầu sử dụng
giao diện mạng để gửi email rác đến các máy khác không? lẽ không, nhưng nếu
bạn là chủ sở hữu của máy tính của mình, bạn có quyền làm tất cả những điều đó,
nếu đó điều bạn muốn làm. Và trừ khi hệ điều hành cẩn thận, bất kỳ quy trình
nào nó chạy, bao gồm cả quy trình chạy đoạn mã bạn đã tải xuống, có thể làm bất
cứ điều gì bạn có thể làm.
3. Góc độ và thách thức của bảo mật hệ điều hành
Xem xét vấn đề bảo mật hệ điều hành từ một góc độ khác. Một vai trò của hệ điều
hành cung cấp các trừu tượng hữu ích cho các chương trình ứng dụng để xây
dựng trên đó. Những ứng dụng này phải dựa vào các triển khai trừu tượng của OS
để hoạt động như chúng được định nghĩa. Thường xuyên, một phần của định nghĩa
của các trừu tượng như vậy hành vi bảo mật của chúng. dụ, chúng ta mong
đợi rằng hệ thống tệp của hệ điều hành sẽ thực thi các hạn chế truy cập mà được
cho phải thực thi. Các ứng dụng thể xây dựng dựa trên kỳ vọng này để đạt
được các mục tiêu bảo mật mà họ yêu cầu, như dựa vào các đảm bảo truy cập tệp
để đảm bảo rằng một tệp họ đã chỉ định không thể viết không bị thay đổi. Nếu
các ứng dụng không thể dựa vào việc triển khai đúng đắn của các đảm bảo bảo mật
cho các trừu tượng OS, thì họ không thể sử dụng các trừu tượng này để đạt được
các mục tiêu bảo mật của riêng họ. Ít nhất, điều đó nghĩa là nhiều công việc hơn
cho các nhà phát triển ứng dụng, họ sẽ cần phải thực hiện các biện pháp bổ sung
để đạt được các mục tiêu bảo mật mong muốn của họ. Lấy vào tài khoản cuộc thảo
luận trước đó của chúng ta, họ thường sẽ không thể đạt được các mục tiêu này nếu
các trừu tượng họ phải dựa vào (như bộ nhớ ảo hoặc một chính sách lập lịch được
định nghĩa rõ ràng) không thể được tin cậy.
11
ràng, bảo mật hệ điều hành quan trọng, nhưng khó đạt được. Vậy chúng ta
làm gì để bảo mật hệ điều hành của mình? Giải quyết câu hỏi này đã là một thách
thức cho nhiều thế hệ nhà khoa học máy tính, vẫn chưa câu trả lời hoàn chỉnh.
Nhưng có một số nguyên tắc và công cụ quan trọng mà chúng ta có thể sử dụng để
bảo mật hệ điều hành. Những công cụ này thường được xây dựng vào bất kỳ hệ
điều hành dùng chung nào chúng ta thể làm việc với, chúng thay đổi
những gì có thể được thực hiện với hệ thống đó và cách chúng ta thực hiện nó. Vì
vậy, có thể không quan tâm đến bảo mật, nhưng chúng ta vẫn cần hiểu những gì hệ
điều hành làm để tự bảo vệ để cũng hiểu cách làm cho hệ thống làm những chúng
ta mong muốn.
CHƯƠNG 2: CẦN LÀM GÌ ĐỂ BẢO MẬT HỆ ĐIỀU HÀNH
BẢO VỆ MÁY TÍNH TỐT NHẤT
Chúng ta khó thể đạt được sự bảo vệ tốt trừ khi chúng ta một cái nhìn toàn
diện về những chúng ta đang cố gắng bảo vệ khi nói rằng hệ điều hành của chúng
ta nên được bảo mật. May mắn thay, câu trả lời cho một hệ điều hành dễ dàng,
ít nhất ở mức độ cao: tất cả mọi thứ.
Câu trả lời này thể không hoàn toàn tốt nhất, nhưng tốt nhất phải một
sự hiểu biết thực tế về những hệ quả rộng lớn của bảo mật hệ điều hành.
Một hệ điều hành thông thường quyền kiểm soát hoàn toàn (hoặc hầu hết) tất cả
phần cứng trên máy và có thể làm bất cứ điều gì phần cứng cho phép. Điều đó
nghĩa là thể kiểm soát bộ xử lý, đọc và viết tất cả các thanh ghi, kiểm tra bất
kỳ vị trí bộ nhớ chính nào và thực hiện bất kỳ hoạt động nào mà một trong những
thiết bị ngoại vi của nó hỗ trợ. Kết quả là, một số việc mà hệ điều hành có thể làm
bao gồm:
Kiểm tra hoặc thay đổi bộ nhớ của bất kỳ quy trình nào
Đọc, viết, xóa hoặc làm hỏng bất kỳ tệp nào trên bất kỳ phương tiện lưu trữ vĩnh
viễn nào có thể ghi được, bao gồm ổ cứng và ổ flash
Thay đổi lịch trình hoặc thậm chí dừng thực thi của bất kỳ quy trình nào Gửi bất
kỳ thông điệp nào đến bất cứ đâu, bao gồm các phiên bản đã được thay đổi của
những gì một quy trình muốn gửi
Kích hoạt hoặc vô hiệu hóa bất kỳ thiết bị ngoại vi nào
Cấp quyền cho bất kỳ quy trình nào truy cập vào tài nguyên của bất kỳ quy trình
nào khác
Tùy ý tước bỏ bất kỳ tài nguyên nào mà một quy trình kiểm soát
12
Phản hồi bất kỳ lời gọi hệ thống nào bằng một lờii dối có hại nhất
Về bản chất, các quy trình phụ thuộc vào hệ điều hành. Gần như không thể cho
một quy trình 'bảo vệ' bất kỳ phần nào của khỏi một hệ điều hành độc hại. Chúng
ta thường giả định rằng hệ điều hành của mình không thực sự độc hại, nhưng một
lỗi cho phép một quy trình độc hại khiến hệ điều hành hoạt động sai lệch gần như
tồi tệ như vậy, thể tiềm ẩn cho phép quy trình đó giành lấy bất kỳ quyền
lực nào của chính hệ điều hành. Điểm này nên khiến chúng ta suy nghĩ rất nghiêm
túc về tầm quan trọng của việc thiết kế hệ điều hành an toàn và, phổ biến hơn, áp
dụng các bản vá bảo mật cho bất kỳ hệ điều hành nào bạn đang chạy. Lỗi bảo mật
trong hệ điều hành của bạn có thể hoàn toàn làm tổn hại đến mọi thứ về máy tính
mà hệ thống đó chạy trên, vì vậy việc ngăn chặn chúng và bất kỳ lỗi nào được
phát hiện là vô cùng quan trọng.
CHƯƠNG 3: MỤC TIÊU VÀ CHÍNH SÁCH BẢO MẬT
1. Mục tiêu bảo mật cơ bản
Khi chúng ta nói muốn một hệ điều hành, hoặc bất kỳ hệ thống nào, được bảo mật,
điều đó thật ra khá mơ hồ. Điều chúng ta thực sự muốn nói là có những việc chúng
ta muốn xảy ra trong hệ thống những việc chúng ta không muốn xảy ra,
chúng ta muốn một độ tin cậy cao rằng chúng ta sẽ nhận được những chúng ta
muốn. Như trong hầu hết các khía cạnh khác của cuộc sống, chúng ta thường phải
trả tiền cho những chúng ta nhận được, vậy đáng giá để suy nghĩ về chính xác
những thuộc tính hiệu ứng bảo mật chúng ta thực sự cần sau đó chỉ trả
tiền cho những thứ đó, không phải cho những thứ khác chúng ta không cần.
Điều này nghĩa chúng ta muốn xác định các mục tiêu chúng ta cho
hành vi liên quan đến bảo mật của hệ thống của mình và chọn những phương pháp
phòng thủ có khả năng đạt được những mục tiêu đó với một chi phí hợp lý.
Các nhà nghiên cứu về bảo mật đã suy nghĩ về vấn đề này một cách rộng rãi từ lâu.
một cấp độ khái niệm cao, họ đã định nghĩa ba mục tiêu lớn liên quan đến bảo
mật thường gặp ở nhiều hệ thống, bao gồm cả hệ điều hành. Đó là:
Bảo mật thông tin: Nếu một thông tin nào đó được cho nên được giấu kín khỏi
người khác, không cho họ tìm hiểu được thông tin đó. Ví dụ, bạn không muốn ai
đó biết số thẻ tín dụng của bạn - bạn muốn số đó được giữ kín.
Tính toàn vẹn: Nếu một thông tin hay thành phần của một hệ thống được cho
nên ở một trạng thái cụ thể, không cho phép kẻ thù thay đổi nó. Ví dụ, nếu bạn đã
đặt mua trực tuyến một pizza pepperoni, bạn không muốn một kẻ đùa cợt ác ý thay
đổi đơn hàng của bạn thành 1000 pizza cá cơm. Một khía cạnh quan trọng của tính
toàn vẹn tính xác thực. Thường xuyên quan trọng phải chắc chắn không chỉ
13
thông tin không bị thay đổi, còn phải được tạo ra bởi một bên cụ thể chứ không
phải bởi kẻ thù.
Khả năng sẵn có: Nếu một thông tin hay dịch vụ nào đó được cho nên sẵn
cho việc sử dụng của bạn hoặc người khác, hãy đảm bảo rằng kẻ tấn công không
thể ngăn cản việc sử dụng . Ví dụ, nếu doanh nghiệp của bạn đang một đợt
giảm giá lớn, bạn không muốn đối thủ cạnh tranh của mình thể chặn các con
đường xung quanh cửa hàng của bạn, ngăn khách hàng tiếp cận với bạn.
2. Một số khía cạnh khác của bảo mật hệ điều hành
Một khía cạnh quan trọng bổ sung của ba mục tiêu này chúng ta muốn sự chia
sẻ được kiểm soát trong hệ thống của mình. Chúng ta chia sẻ bí mật của mình với
một số người nhưng không phải với người khác. Chúng ta cho phép một số người
thay đổi cơ sở dữ liệu của doanh nghiệp mình, nhưng không phải bất kỳ ai. Một số
hệ thống cần được làm cho sẵn cho một nhóm người dùng ưu tiên cụ thể (như
những người đã trả tiền để chơi trò chơi trực tuyến của bạn) không phải cho
những người khác (những người không trả tiền). Ai người yêu cầu rất quan trọng,
trong máy tính cũng như trong cuộc sống hàng ngày.
Một khía cạnh quan trọng khác của bảo mật đối với các hệ thống máy tính chúng
ta thường muốn chắc chắn rằng khi ai đó nói với chúng ta điều gì đó, họ không thể
sau đó phủ nhận việc họ đã làm. Khía cạnh này thường được gọi không thể từ
chối. Càng khó và đắt đỏ hơn cho ai đó để phủ nhận hành động của họ, thì càng dễ
dàng để chúng ta giữ họ chịu trách nhiệm về những hành động đó, và do đó, mọi
người càng ít có khả năng thực hiện các hành động ác ý. Sau cùng, họ có thể sẽ bị
bắt và sẽ gặp rắc rối khi phủ nhận việc họ đã làm.
3. Mục tiêu của bảo mật hệ điều hành
Đây những mục tiêu lớn, chung chung. Đối với một hệ thống thực tế, bạn cần
phải đi sâu vào các mục tiêu cụ thể, chi tiết hơn. Trong một hệ điều hành thông
thường, ví dụ, chúng ta có thể có một mục tiêu bảo mật thông tin nêu rằng không
gian bộ nhớ của một quá trình không thể bị đọc một cách tùy ý bởi một quá trình
khác. Chúng ta có thể có một mục tiêu tính toàn vẹn nêu rằng nếu một người dùng
viết một bản ghi vào một tệp cụ thể, một người dùng khác không được phép viết
tệp đó không thể thay đổi bản ghi. Chúng ta thể một mục tiêu về khả năng
sẵn nêu rằng một quá trình chạy trên hệ thống không thể chiếm hữu CPU
ngăn các quá trình khác nhận được phần CPU của họ. Nếu bạn suy ngẫm lại những
bạn đã học về trừu tượng hóa quá trình, quản bộ nhớ, lập lịch, hệ thống tệp,
IPC, và các chủ đề khác từ lớp học này, bạn nên thể nghĩ ra một số mục tiêu bảo
14
mật thông tin, tính toàn vẹn, khả năng sẵn khác chúng ta thể muốn
trong hệ điều hành của mình.
Đối với bất kỳ hệ thống cụ thể nào, ngay cả các mục tiêu ở cấp độ này cũng không
đủ cụ thể. Mục tiêu tính toàn vẹn được ám chỉ ở trên, nơi một tệp của người dùng
không nên bị ghi đè bởi một người dùng khác không được phép làm như vậy, cho
bạn một manh mối về độ cụ thể thêm mà chúng ta cần trong các mục tiêu bảo mật
của chúng ta cho một hệ thống cụ thể. Có thể có một số người dùng nào đó nên có
thể ghi đè lên tệp đó, như thể xảy ra khi hai người đang cộng tác viết một báo
cáo. Nhưng điều đó không có nghĩa là một người dùng thứ ba không liên quan nên
có thể viết tệp đó, nếu anh ta không cộng tác về báo cáo được lưu trữ ở đó. Chúng
ta cần có khả năng chỉ định chi tiết như vậy trong các mục tiêu bảo mật của mình.
Hệ điều hành được viết để được sử dụng bởi nhiều người khác nhau với nhiều nhu
cầu khác nhau, bảo mật hệ điều hành nên phản ánh sự tổng quát đó. Những
chúng ta muốn trong các chế bảo mật cho hệ điều hành sự linh hoạt trong
việc mô tả các mục tiêu bảo mật chi tiết của chúng ta.
Cuối cùng, tất nhiên, phần mềm hệ điều hành phải cố gắng hết sức để thực thi
những mục tiêu bảo mật linh hoạt đó, điều này có nghĩa là chúng ta sẽ cần phải
hóa những mục tiêu đó thành các hình thức phần mềm thể hiểu được. Chúng
ta thường phải chuyển đổi sự hiểu biết hồ của mình về các mục tiêu bảo mật
của mình thành các chính sách bảo mật cụ thể, ràng. dụ, trong trường hợp
của tệp được tả trên, chúng ta thể muốn chỉ định một chính sách như 'người
dùng A B thể viết vào tệp X, nhưng không người dùng nào khác thể
viết nó.' Với mức độ cụ thể đó, được hỗ trợ bởi các chế được thiết kế triển
khai cẩn thận, chúng ta có thể hy vọng đạt được các mục tiêu bảo mật của mình.
Lưu ý một hậu quả quan trọng cho bảo mật hệ điều hành: trong nhiều trường hợp,
một hệ điều hành sẽ các chế cần thiết để thực hiện một chính sách bảo mật
mong muốn với một mức độ đảm bảo cao trong việc áp dụng đúng đắn của nó,
nhưng chỉ khi ai đó nói cho hệ điều hành chính xác chính sách đó là gì. Với một
số ngoại lệ quan trọng (như duy trì không gian địa chỉ của một quá trình riêng
trừ khi được chỉ đạo khác), hệ điều hành chỉ cung cấp các chế chung có thể thực
hiện nhiều chính sách cụ thể. Tuy nhiên, không thiết kế thông minh của các
chính sách và áp dụng cẩn thận các cơ chế, những gì hệ điều hành nên hoặc có thể
làm có thể không phải là những gì hệ điều hành của bạn sẽ làm.
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG BẢO MẬT HỆ ĐIỀU
HÀNH
15
Ít người trong số các bạn sẽ tự xây dựng hệ điều hành của mình, hay thậm chí thực
hiện những thay đổi nghiêm túc đối với bất kỳ hệ điều hành hiện nào, nhưng
chúng tôi kỳ vọng nhiều bạn sẽ xây dựng các hệ thống phần mềm lớn theo một
cách nào đó. Kinh nghiệm của nhiều nhà khoa học máy tính với thiết kế hệ thống
đã chỉ ra rằng một số nguyên tắc thiết kế hữu ích trong việc xây dựng các hệ
thống có yêu cầu bảo mật. Những nguyên tắc này được Jerome Saltzer và Michael
Schroeder đề xuất lần đầu tiên trong một bài báo ảnh hưởng, mặc một số
trong chúng đến từ những quan sát trước đó của người khác. Mặc dù không có tác
giả gốc hay những người bình luận sau này tuyên bố rằng việc tuân theo chúng sẽ
đảm bảo rằng hệ thống của bạn an toàn, việc chú ý đến chúng đã được chứng minh
là dẫn đến các hệ thống an toàn hơn, trong khi bạn bỏ qua chúng thì tự mình chịu
rủi ro.
Nếu thực sự đang xây dựng một hệ thống phần mềm lớn, thì việc tìm hiểu bài
báo này (hoặc các bình luận chi tiết hơn về nó) và nghiên cứu các khái niệm một
cách cẩn thận sẽ đáng giá rất nhiều.
Kinh tế về chế (Economy of mechanism) - Điều này bản có nghĩa là giữ hệ
thống của bạn càng nhỏ đơn giản càng tốt. Hệ thống đơn giản ít lỗi hơn
dễ dàng hiểu được hành vi của chúng hơn. Nếu bạn không hiểu hành vi của hệ
thống, bạn khó thể biết liệu đạt được mục tiêu bảo mật của mình hay
không.
Mặc định an toàn (Fail-safe defaults)- Mặc định để an toàn, không phải không an
toàn. Nếu các chính sách thể được thiết lập để xác định hành vi của hệ thống,
hãy có mặc định cho những chính sách đó an toàn hơn, không phải ít an toàn hơn.
Kiểm soát toàn diện (Complete mediation) - Đây một thuật ngữ bảo mật nghĩa
là bạn nên kiểm tra xem một hành động được thực hiện có đáp ứng các chính sách
bảo mật mỗi lần hành động đó được thực hiện.
Thiết kế mở (Open design) - Giả định kẻ thù của bạn biết mọi chi tiết của thiết kế
của bạn. Nếu hệ thống vẫn đạt được mục tiêu bảo mật của mình, bạn đang ở trong
tình trạng tốt. Nguyên tắc này không nhất thiết có nghĩa là bạn thực sự nói với mọi
người tất cả các chi tiết, nhưng dựa vào giả định rằng kẻ tấn công đã tìm hiểu mọi
thứ. Trên thực tế, anh ta thường đã biết.
Tách biệt quyền hạn (Separation of privilege) - Yêu cầu các bên hoặc thông tin xác
thực riêng biệt để thực hiện các hành động quan trọng. Ví dụ, xác thực hai yếu tố,
nơi bạn sử dụng cả mật khẩu sở hữu một phần cứng để xác định danh tính, an
toàn hơn là sử dụng bất kỳ phương pháp nào đó một mình.
16
Quyền hạn tối thiểu (Least privilege) - Cấp cho người dùng hoặc quy trình những
quyền hạn tối thiểu cần thiết để thực hiện các hành động bạn muốn cho phép. Bạn
càng cấp nhiều quyền hạn cho một bên, nguy cơ họ lạm dụng những quyền hạn đó
càng lớn. Ngay cả khi bạn tin tưởng rằng bên đó không ác ý, nếu họ mắc lỗi,
một kẻ thù có thể tận dụng lỗi của họ để sử dụng quyền hạn thừa của họ theo cách
có hại.
chế ít chung nhất (Least common mechanism)- Đối với các người dùng hoặc
quy trình khác nhau, sử dụng các cấu trúc dữ liệu hoặc chế riêng biệt để xử
chúng. dụ, mỗi quy trình nhận được bảng trang riêng của mình trong một hệ
thống bộ nhớ ảo, đảm bảo rằng một quy trình không thể truy cập vào các trang của
quy trình khác.
Tính chấp nhận (Acceptability) - Một tính chất quan trọng không được nhiều lập
trình viên yêu thích. Nếu người dùng của bạn không sử dụng nó, hệ thống của bạn
vô giá trị. Quá nhiều hệ thống bảo mật hứa hẹn đã bị bỏ rơi chúng yêu cầu quá
nhiều từ người dùng của mình.
Những lời khuyên trên không phải những lời khuyên duy nhất hữu ích về thiết
kế các hệ thống an toàn. Còn rất nhiều tài liệu tốt về bước tiếp theo, chuyển đổi
một thiết kế tốt thành mã code đạt được mục tiêu bảo mật bạn dự định, cũng như
các tài liệu khác về cách đánh giá liệu hệ thống bạn đã xây dựng thực sự đáp
ứng những mục tiêu đó hay không. Những vấn đề này nằm ngoài phạm vi của khóa
học này, nhưng lại vô cùng quan trọng khi bạn đến lúc cần xây dựng các hệ thống
lớn, phức tạp.
Để thảo luận về các phương pháp lập trình an toàn, bạn thể bắt đầu với tác phẩm
của Seacord, nếu bạn làm việc với ngôn ngữ C. Nếu bạn làm việc với một ngôn
ngữ khác, bạn nên tìm kiếm một tài liệu tương tự cụ thể cho ngôn ngữ đó, vì nhiều
vấn đề lập trình an toàn liên quan đến chi tiết của ngôn ngữ. Để một cách tiếp
cận toàn diện về cách đánh giá liệu hệ thống của bạn an toàn không, hãy bắt đầu
với công trình của Dowd và cộng sự.
CHƯƠNG 5: KHÁI NIỆM CƠ BẢN VỀ BẢO MẬT HỆ ĐIỀU
HÀNH
1. Khái niệm
Trong một hệ điều hành điển hình, chúng ta có một số mục tiêu bảo mật, tập trung
vào các khía cạnh khác nhau của bảo mật thông tin, toàn vẹn, và khả dụng. Một số
mục tiêu này có xu hướng được tích hợp sẵn vào mô hình hệ điều hành, trong khi
17
những mục tiêu khác được kiểm soát bởi chủ sở hữu hoặc người dùng của hệ thống.
Các mục tiêu tích hợp sẵn là những mục tiêu cực kỳ phổ biến, hoặc phải được đảm
bảo để làm cho các mục tiêu cụ thể hơn có thể đạt được. Hầu hết các mục tiêu tích
hợp sẵn liên quan đến việc kiểm soát quyền truy cập của quy trình đến các bộ phận
của phần cứng.
Điều này bởi phần cứng được chia sẻ bởi tất cả các quy trình trên một hệ thống,
và trừ khi việc chia sẻ được kiểm soát cẩn thận, một quy trình có thể can thiệp vào
mục tiêu bảo mật của quy trình khác. Các mục tiêu tích hợp sẵn khác liên quan đến
các dịch vụ mà hệ điều hành cung cấp, như hệ thống tệp, quản bộ nhớ, và giao
tiếp giữa các quy trình. Nếu những dịch vụ này không được kiểm soát cẩn thận,
các quy trình có thể lật đổ mục tiêu bảo mật của hệ thống.
2. Xử lý quy trình và bảo mật
Rõ ràng, rất nhiều bảo mật hệ thống sẽ liên quan đến việc xử lý quy trình. Nếu hệ
điều hành thể duy trì sự phân chia rõ ràng của các quy trình mà chỉ có thể bị phá
vỡ với sự giúp đỡ của hệ điều hành, thì cả phần cứng chia sẻ lẫn dịch vụ hệ điều
hành không thể được sử dụng để lật đổ các mục tiêu bảo mật của chúng ta. Yêu
cầu đó ngụ ý rằng hệ điều hành cần phải cẩn thận khi cho phép sử dụng phần cứng
và các dịch vụ của mình. Trong nhiều trường hợp, hệ điều hành có cơ hội tốt để áp
dụng sự cẩn thận như vậy. dụ, hệ điều hành kiểm soát bộ nhớ ảo, từ đó hoàn
toàn kiểm soát địa chỉ bộ nhớ vật nào mỗi quy trình thể truy cập. Sự hỗ
trợ của phần cứng ngăn chặn một quy trình từ việc thậm chí gọi một địa chỉ bộ nhớ
vật không được ánh xạ vào không gian bộ nhớ ảo của nó. (Những người làm
việc về phần mềm trong chúng ta nên nhớ cảm ơn những người làm việc về phần
cứng vì tất cả những thứ tuyệt vời họ đã cung cấp cho chúng ta để làm việc.)
3. Lời gọi hệ thống trong hệ điều hành
Các lời gọi hệ thống cung cấp cho hệ điều hành một cơ hội khác để cung cấp bảo
vệ. Trong hầu hết các hệ điều hành, các quy trình truy cập các dịch vụ hệ thống
bằng cách thực hiện một lời gọi hệ thống rõ ràng, như đã được thảo luận trong các
chương trước. Như bạn đã học, các lời gọi hệ thống chuyển chế độ thực thi từ chế
độ người dùng của bộ xử sang chế độ giám sát của nó, kích hoạt một phần
hệ điều hành phù hợp khi làm như vậy. đó thể xác định quy trình nào đã
thực hiện lời gọi hệ thống và dịch vụ nào mà quy trình yêu cầu. Trước đây, chúng
ta chỉ nói về cách điều này có thể cho phép hệ điều hành gọi đoạn mã hệ thống phù
hợp để thực hiện dịch vụ, để theo dõi ai để trả lại quyền kiểm soát khi dịch vụ
đã được hoàn thành. Nhưng cùng một cơ chế cung cấp cho hệ điều hành cơ hội để
kiểm tra liệu dịch vụ được yêu cầu có nên được cho phép theo chính sách bảo mật
của hệ thống hay không. quyền truy cập vào các thiết bị ngoại vi thông qua trình
điều khiển thiết bị, thường cũng được truy cập qua lời gọi hệ thống, cùng một
18
chế thể đảm bảo áp dụng đúng chính sách bảo mật cho quyền truy cập phần
cứng.
Khi một quy trình thực hiện một lời gọi hệ thống, hệ điều hành sẽ sử dụng định
danh quy trình trong khối kiểm soát quy trình hoặc cấu trúc tương tự để xác định
danh tính của quy trình. Hệ điều hành sau đó có thể sử dụng các cơ chế kiểm soát
truy cập để quyết định liệu quy trình được xác định được phép thực hiện hành
động được yêu cầu hay không. Nếu có, hệ điều hành hoặc tự thực hiện hành
động đó thay mặt cho quy trình hoặc sắp xếp cho quy trình thực hiện nó mà không
cần can thiệp thêm của hệ thống. Nếu quy trình không được phép, hệ điều hành có
thể đơn giản tạo ra một mã lỗi cho lời gọi hệ thống và trả lại quyền kiểm soát cho
quy trình, nếu thuật toán lập lịch cho phép.
CHƯƠNG 6: TỔNG KẾT
Bảo mật của hệ điều hành một yếu tố quan trọng không chỉ cho chính hệ điều
hành còn cho cả các ứng dụng chạy trên . Các lỗ hổng bảo mật trong phần
mềm này thể dẫn đến những hậu quả nghiêm trọng, với khả năng gây ra thiệt
hại không giới hạn. Trong bối cảnh đó, việc đảm bảo bảo mật cho hệ thống là một
nhiệm vụ đầy thách thức nhưng không phải không thể. một số nguyên tắc
thiết kế đã được xác định qua thời gian, những nguyên tắc này đã chứng minh
giá trị không chỉ trong việc thiết kế hệ điều hành còn trong việc phát triển
bất kỳ hệ thống phần mềm lớn nào.
Một phần quan trọng của việc đạt được bảo mật trong hệ điều hành là xác định
ràng các mục tiêu bảo mật cần đạt được. Những mục tiêu này thường xoay quanh
các khía cạnh như bảo mật thông tin, toàn vẹn dữ liệu, và khả dụng của hệ thống.
Tùy thuộc vào yêu cầu cụ thể của mỗi hệ thống, các mục tiêu bảo mật cụ thể có thể
thay đổi, điều này dẫn đến việc các hệ thống khác nhau sẽ cần áp dụng các chính
sách bảo mật khác nhau để đáp ứng nhu cầu của mình. Trong quá trình thiết kế hệ
điều hành, một phương pháp tiếp cận phổ biến phân tách giữa các chính sách
bảo mật cụ thể - được thiết lập để đáp ứng nhu cầu của từng hệ thống riêng lẻ - và
các chế chung - được sử dụng để thực hiện các chính sách bảo mật trên tất cả
các hệ thống. Phương pháp tiếp cận này cho phép tạo ra một khuôn khổ linh hoạt,
trong đó có thể dễ dàng điều chỉnh các chính sách bảo mật để phù hợp với các yêu
cầu bảo mật đang thay đổi không cần phải sửa đổi các chế bản của hệ
thống.
19
PHẦN III: KẾT LUẬN
Chúng em xin chân thành biết ơn sâu sắc đến Thầy Trần Đăng Hoan về sự
tận tình, kiên nhẫn sự hỗ trợ quý báu trong suốt quá trình thực hiện báo
cáo bài tập lớn về đề tài "Giới thiệu về bảo mật trong hệ điều hành". Thầy
không chỉ là người hướng dẫn mà còn là người bạn đồng hành đáng tin cậy,
luôn sẵn lòng chia sẻ kiến thức kinh nghiệm để giúp em vượt qua những
khó khăn, hoàn thiện báo cáo một cách tốt nhất.
Nhờ sự chỉ dẫn của Thầy, chúng em đã hội hiểu sâu hơn về tầm quan
trọng của bảo mật trong hệ điều hành, nhận thức được các nguy tiềm ẩn
cũng như biết cách áp dụng các biện pháp bảo mật hiệu quả. Qua đó, kiến
thức kỹ năng chúng em thu được từ bài tập này sẽ nền tảng vững
chắc cho sự phát triển và thành công trong tương lai.
Chúng em cam kết sẽ tiếp tục nỗ lực học tập áp dụng những kiến thức mà
Thầy đã truyền đạt, để trở thành những chuyên gia uyên bác trong lĩnh vực
này. Một lần nữa, chúng em xin gửi lời biết ơn chân thành nhất đến Thầy
Trần Đăng Hoan hy vọng sẽ tiếp tục nhận được sự hỗ trợ định hướng
từ Thầy trong những hành trình học tập và nghiên cứu sắp tới.
| 1/20

Preview text:

TRƯỜNG ĐẠI HỌC PHENIKAA KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN HỆ ĐIỀU HÀNH
GIỚI THIỆU VỀ BẢO MẬT TRONG HỆ ĐIỀU HÀNH
Giảng viên hướng dẫn: Trần Đăng Hoan
Nhóm 24 - Hệ điều hành-1-2-23(N07)
Sinh viên thực hiện: Bùi Việt Quang (21010614)
Nguyễn Văn Khải (21011609)
Ngành/ chuyên ngành: Công nghệ thông tin
Hà Nội, tháng 03 năm 2024 LỜI CẢM ƠN
Chúng em xin cảm ơn Thầy Trần Đăng Hoan đã tận tình giảng dạy và hướng dẫn,
giúp đỡ chúng em hoàn thành báo cáo bài tập lớn môn hệ điều hành về đề tài
“ Giới thiệu về bảo mật trong hệ điều hành” 1 MỤC LỤC
LỜI MỞ ĐẦU ........................................................................................................ 3
PHẦN I: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ....................................................... 4
HỆ ĐIỀU HÀNH LÀ GÌ .................................................................................... 4
1. THÀNH PHẦN CHÍNH CỦA HỆ ĐIỀU HÀNH - OPERATINGSYSTEM
........................................................................................................................ 4
2. NHỮNG LOẠI HỆ ĐIỀU HÀNH (OS) .................................................... 5
3. CÁC CHỨC NĂNG CƠ BẢN CỦA HỆ ĐIỀU HÀNH ............................ 6
4. MỤC TIÊU NHIỆM VỤ CỦA HỆ ĐIỀU HÀNH (OS) ............................ 7
PHẦN II : GIỚI THIỆU VỀ BẢO MẬT HỆ ĐIỀU HÀNH (SECURITY -INTRO)
................................................................................................................................ 9
CHƯƠNG 1: GIỚI THIỆU CHUNG ................................................................. 9
1. Bảo mật trong hệ điều hành là gì ? ............................................................ 9
2. Tại sao bảo mật hệ điều hành lại quan trọng ? ........................................... 9
3. Góc độ và thách thức của bảo mật hệ điều hành ...................................... 10
CHƯƠNG 2: CẦN LÀM GÌ ĐỂ BẢO MẬT HỆ ĐIỀU HÀNH BẢO VỆMÁY
TÍNH TỐT NHẤT ........................................................................................... 11
CHƯƠNG 3: MỤC TIÊU VÀ CHÍNH SÁCH BẢO MẬT............................. 12
1. Mục tiêu bảo mật cơ bản .......................................................................... 12
2. Một số khía cạnh khác của bảo mật hệ điều hành ................................... 13
3. Mục tiêu của bảo mật hệ điều hành ................................................................. 13
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG BẢO MẬT HỆ ĐIỀU HÀNH ........... 14
CHƯƠNG 5: KHÁI NIỆM CƠ BẢN VỀ BẢO MẬT HỆ ĐIỀU HÀNH ....... 16
1. Khái niệm ................................................................................................. 16
2. Xử lý quy trình và bảo mật ...................................................................... 17
3. Lời gọi hệ thống trong hệ điều hành ........................................................ 17
CHƯƠNG 6: TỔNG KẾT ............................................................................... 18
PHẦN III: KẾT LUẬN ........................................................................................ 19 2
LỜI MỞ ĐẦU
Trong thời đại thông tin số hiện nay, hệ điều hành không chỉ giữ vai trò là nền tảng
cơ bản cho mọi hoạt động của thiết bị điện tử, từ máy tính cá nhân, điện thoại thông
minh, đến các hệ thống máy chủ quy mô lớn, mà còn là yếu tố quyết định đến khả
năng bảo mật thông tin trong kỷ nguyên kỹ thuật số. Hệ điều hành quản lý và điều
phối mọi hoạt động của phần cứng, cung cấp giao diện người dùng trực quan, đồng
thời làm cầu nối cho các ứng dụng phần mềm để thực thi các tác vụ. Điều này đòi
hỏi hệ điều hành phải được thiết kế với khả năng đảm bảo an toàn, bảo mật thông
tin và dữ liệu trước sự ngày càng phát triển của các mối đe dọa an ninh mạng.
Trong bối cảnh phát triển nhanh chóng của công nghệ thông tin và truyền thông,
cùng với đó là sự gia tăng không ngừng của các mối đe dọa mạng, việc đảm bảo
an ninh cho hệ điều hành đã trở thành một trong những ưu tiên hàng đầu. Các cuộc
tấn công mạng ngày càng trở nên tinh vi và phức tạp hơn, từ việc lợi dụng các lỗ
hổng bảo mật nhỏ nhất cho đến việc triển khai các chiến dịch tấn công mục tiêu,
đòi hỏi các hệ điều hành không chỉ cần cung cấp các tính năng tiên tiến mà còn
phải bảo vệ người dùng trước mọi nguy cơ tiềm ẩn.
Đề tài giới thiệu bảo mật trong hệ điều hành sẽ cung cấp một cái nhìn toàn diện về
cấu trúc và hoạt động của hệ điều hành, đồng thời đi sâu vào các khía cạnh bảo
mật quan trọng như quản lý quyền truy cập, cơ chế mã hóa dữ liệu, cách thức phát
hiện và ngăn chặn phần mềm độc hại, cũng như các chiến lược cập nhật và vá lỗi bảo mật. 3
PHẦN I: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH
HỆ ĐIỀU HÀNH LÀ GÌ

Hệ điều hành (Operating System - OS) là một phần mềm hệ thống cực kỳ quan
trọng, đóng vai trò như là một trung gian không thể thiếu giữa người dùng máy
tính và phần cứng của máy. Có thể nói, hệ điều hành là trái tim của mọi hệ thống
máy tính, nó không chỉ quản lý và điều phối việc sử dụng các tài nguyên phần cứng
như bộ vi xử lý (CPU), bộ nhớ RAM, ổ cứng, thiết bị nhập/xuất và các thành phần
phần cứng khác, mà còn cung cấp một giao diện người dùng thân thiện, qua đó cho
phép người dùng và các ứng dụng phần mềm tương tác với máy tính một cách mượt mà và hiệu quả.
Hệ điều hành có vai trò to lớn trong việc định hình trải nghiệm sử dụng máy tính
của người dùng. Nó giúp đơn giản hóa quá trình tương tác với phần cứng phức tạp,
bằng cách cung cấp một bộ giao diện lập trình ứng dụng (API) cho các nhà phát
triển phần mềm, giúp họ tạo ra các ứng dụng có thể chạy trên nền tảng đó mà không
cần phải quan tâm đến chi tiết cụ thể của phần cứng.
Bên cạnh việc quản lý tài nguyên phần cứng, hệ điều hành còn có trách nhiệm quản
lý và cấp phát bộ nhớ, quản lý tập tin, quản lý quyền truy cập và bảo mật, cũng
như giám sát việc thực thi của các chương trình. Qua đó, nó đảm bảo rằng mỗi ứng
dụng và dịch vụ được cấp phát một lượng tài nguyên phù hợp, và các quy trình
không xâm phạm lẫn nhau, giữ cho hệ thống ổn định và an toàn.
Một trong những đặc điểm quan trọng của hệ điều hành là khả năng đa nhiệm và
đa người dùng, cho phép nhiều chương trình và nhiều người dùng cùng tương tác
với máy tính mà không ảnh hưởng đến hiệu suất hay bảo mật của nhau. Điều này
được thực hiện thông qua việc phân chia thời gian CPU một cách thông minh và
cấp phát bộ nhớ độc lập cho từng quy trình.
1. THÀNH PHẦN CHÍNH CỦA HỆ ĐIỀU HÀNH - OPERATING SYSTEM
Hệ điều hành (Operating System - OS) là một phần mềm hệ thống phức tạp, bao
gồm nhiều tính năng và thành phần khác nhau, đóng vai trò quan trọng trong việc
quản lý phần cứng và phần mềm của máy tính. Mặc dù có sự khác biệt về chức
năng và thiết kế giữa các hệ điều hành, ba thành phần chính sau đây thường được
xem là nền tảng cốt lõi của hầu hết các hệ điều hành hiện đại:
Kernel (Nhân Hệ Điều Hành): Nhân hệ điều hành, hay Kernel, là trái tim của bất
kỳ hệ điều hành nào, chịu trách nhiệm quản lý mức độ thấp nhất của các thiết bị
phần cứng. Nó làm việc ở tầng cơ bản nhất, cung cấp các dịch vụ cơ bản như quản 4
lý bộ nhớ, quản lý quy trình và luồng, điều phối tác vụ, và điều khiển truy cập đến
phần cứng. Kernel đóng vai trò quyết định trong việc đảm bảo hiệu suất, ổn định
và an ninh của hệ thống bằng cách giới hạn truy cập trực tiếp vào phần cứng và
quản lý các tài nguyên một cách hiệu quả, giúp các ứng dụng và dịch vụ hệ thống
hoạt động mà không gây xung đột lẫn nhau.
API (Giao Diện Lập Trình Ứng Dụng): API, viết tắt của Application Programming
Interface, là một tập hợp các quy định và công cụ cho việc xây dựng phần mềm và
ứng dụng. Trong bối cảnh của hệ điều hành, API là cầu nối giữa phần mềm ứng
dụng và kernel của hệ điều hành, cho phép các nhà phát triển viết mã để tương tác
với chức năng cốt lõi của hệ điều hành mà không cần phải giao tiếp trực tiếp với
phần cứng. Điều này làm cho việc phát triển ứng dụng trở nên dễ dàng và mạnh
mẽ hơn, vì các API cung cấp một tập hợp các "khối xây dựng" sẵn có, giúp tiết
kiệm thời gian và công sức khi xây dựng các chức năng mới.
Giao Diện Người Dùng (User Interface - UI): Giao diện người dùng của hệ điều
hành là phần mà người dùng tương tác trực tiếp, bao gồm cả giao diện đồ họa (GUI
- Graphical User Interface) và giao diện dòng lệnh (CLI - Command Line Interface).
GUI cung cấp một cách trực quan để người dùng giao tiếp với máy tính thông qua
việc sử dụng các biểu tượng đồ họa, cửa sổ, và menu, trong khi CLI cho phép người
dùng thực thi các lệnh thông qua việc nhập văn bản. Cả hai loại giao diện này đều
có những ưu và nhược điểm riêng, tùy thuộc vào nhu cầu và kỹ năng của người
dùng. Một giao diện người dùng tốt không chỉ cần dễ sử dụng và trực quan mà còn
cần phản hồi nhanh chóng và cung cấp thông tin hữu ích cho người dùng, từ đó tối
ưu hóa trải nghiệm người dùng.
2. NHỮNG LOẠI HỆ ĐIỀU HÀNH (OS)
Trong thế giới công nghệ đa dạng và phát triển không ngừng như hiện nay, hệ điều
hành được phân loại dựa trên các tiêu chí như khả năng hỗ trợ nhiều người dùng,
khả năng đa nhiệm, khả năng đa luồng và khả năng xử lý trong thời gian thực.
Dưới đây là một cái nhìn sâu hơn về các loại hệ điều hành trên:
Multi-user (Nhiều người dùng): Hệ thống hệ điều hành multi-user được thiết kế để
cho phép nhiều người dùng truy cập và sử dụng máy tính cùng một lúc, thường
qua mạng. Điều này đòi hỏi khả năng quản lý tài khoản người dùng, quyền truy
cập, và cách ly dữ liệu giữa các người dùng để đảm bảo an toàn và bảo mật. Các
hệ điều hành như UNIX và các phiên bản của nó (bao gồm Linux), cũng như
Windows Server, là ví dụ của loại hệ điều hành này. Chúng được thiết kế để phục
vụ hàng trăm hoặc thậm chí hàng ngàn người dùng cùng một lúc, từ các vị trí địa lý khác nhau. 5
Multitasking (Đa nhiệm): Hệ điều hành đa nhiệm cho phép nhiều chương trình
hoặc ứng dụng chạy đồng thời trên một máy tính. Điều này được thực hiện thông
qua việc chia sẻ tài nguyên máy tính (như CPU, bộ nhớ) giữa các chương trình
đang chạy, thường xuyên chuyển đổi giữa chúng để cung cấp ấn tượng về việc
chúng đang chạy đồng thời. Các hệ điều hành hiện đại như Windows, macOS,
Linux, và các phiên bản của Unix đều hỗ trợ đa nhiệm.
Multithreading (Đa luồng): Multithreading là một dạng đặc biệt của multitasking,
cho phép các phần khác nhau (gọi là "luồng") của một chương trình duy nhất chạy
đồng thời. Điều này giúp tăng hiệu suất ứng dụng bằng cách tận dụng tối đa khả
năng xử lý của CPU, đặc biệt là trên các hệ thống đa lõi. Đa luồng được hỗ trợ
rộng rãi trong các hệ điều hành hiện đại và là một công cụ quan trọng cho việc phát
triển phần mềm hiệu quả.
Real-time (Thời gian thực): Hệ điều hành thời gian thực (RTOS) được thiết kế để
phản hồi các yêu cầu đầu vào trong một khoảng thời gian cực kỳ ngắn, gần như
tức thì. Điều này rất quan trọng trong các ứng dụng mà sự chậm trễ không thể chấp
nhận được, như hệ thống kiểm soát công nghiệp, hệ thống y tế, và hệ thống điều
khiển bay. RTOS đảm bảo rằng các tác vụ quan trọng được xử lý theo thời gian
biểu dự kiến, giúp hệ thống duy trì tính nhất quán và đáng tin cậy.
3. CÁC CHỨC NĂNG CƠ BẢN CỦA HỆ ĐIỀU HÀNH
Các chức năng cơ bản của hệ điều hành (Operating System - OS) rất đa dạng và
phức tạp, phản ánh vai trò của nó như là trung tâm điều phối tất cả các hoạt động
trong máy tính. Dưới đây là một cái nhìn sâu hơn vào các chức năng chính mà hệ điều hành thực hiện:
Quản lý tài nguyên: Hệ điều hành có trách nhiệm cao nhất trong việc quản lý các
tài nguyên phần cứng của máy tính. Điều này bao gồm việc phân phối và theo dõi
việc sử dụng bộ vi xử lý (CPU), bộ nhớ (RAM), thiết bị lưu trữ (như ổ cứng và ổ
SSD), cũng như các thiết bị nhập/xuất như bàn phím, chuột, màn hình, và máy in.
Hệ điều hành phải đảm bảo rằng tất cả các ứng dụng và dịch vụ đang chạy trên
máy tính có thể truy cập vào các tài nguyên này một cách hiệu quả, công bằng và
không gây xung đột với nhau.
Quản lý tập tin: Hệ thống tập tin là một phần không thể thiếu của hệ điều hành, cho
phép lưu trữ, tìm kiếm, truy cập, và quản lý dữ liệu trên các thiết bị lưu trữ. Các hệ
thống tập tin khác nhau (như NTFS, FAT32, ext4, v.v.) cung cấp cơ chế để tổ chức 6
dữ liệu trong các tập tin và thư mục, giúp người dùng và ứng dụng dễ dàng truy
cập và quản lý thông tin.
Quản lý quy trình và luồng: Quy trình là một chương trình đang chạy, và luồng là
một phần của quy trình có thể thực thi độc lập. Hệ điều hành quản lý việc tạo, lên
lịch và kết thúc quy trình và luồng để đảm bảo rằng mỗi ứng dụng được cung cấp
thời gian CPU cần thiết để thực hiện tác vụ của mình. Điều này bao gồm cả việc
phân chia thời gian CPU giữa các quy trình và ưu tiên các tác vụ quan trọng.
Quản lý bộ nhớ: Bộ nhớ động (RAM) là một nguồn tài nguyên hạn chế, và hệ điều
hành phải quản lý việc phân bổ bộ nhớ này giữa các quy trình một cách hiệu quả.
Điều này bao gồm việc phân chia bộ nhớ cho các ứng dụng đang yêu cầu, cũng
như giải phóng bộ nhớ khi nó không còn được sử dụng. Hệ điều hành cũng thực
hiện các kỹ thuật như paging và swapping để tối ưu hóa việc sử dụng bộ nhớ.
Giao diện người dùng: Hệ điều hành cung cấp giao diện người dùng (UI) để người
dùng tương tác với máy tính. Điều này có thể là dạng dòng lệnh (CLI) cho phép
nhập các lệnh văn bản, hoặc giao diện đồ họa người dùng (GUI) với các biểu tượng
đồ họa và cửa sổ. UI giúp người dùng thực hiện các tác vụ một cách trực quan và dễ dàng.
Quản lý bảo mật và quyền truy cập: Bảo mật là một trong những nhiệm vụ quan
trọng nhất của hệ điều hành, bao gồm việc bảo vệ thông tin và dữ liệu trước các
mối đe dọa và truy cập trái phép. Hệ điều hành quản lý tài khoản người dùng, mật
khẩu, quyền truy cập vào tệp và thư mục, và thực hiện các cơ chế mã hóa để bảo
vệ dữ liệu. Điều này đảm bảo rằng chỉ những người dùng được ủy quyền mới có
thể truy cập vào thông tin nhạy cảm và các tài nguyên hệ thống.
4. MỤC TIÊU NHIỆM VỤ CỦA HỆ ĐIỀU HÀNH (OS)
Hệ điều hành đóng vai trò quan trọng trong việc cung cấp một môi trường để các
ứng dụng có thể chạy trên máy tính, cũng như quản lý hiệu quả các tài nguyên phần
cứng và phần mềm của hệ thống. Dưới đây là mục tiêu và nhiệm vụ chính của hệ điều hành:
Thực hiện các thao tác cơ bản: Hệ điều hành thực hiện các thao tác cơ bản như đọc,
viết, và quản lý dữ liệu trong kho dữ liệu cùng hệ thống tập tin, giúp cho việc truy
cập và lưu trữ dữ liệu được dễ dàng và hiệu quả. 7
Quản lý phần cứng: OS hỗ trợ điều khiển và quản lý phần cứng, giúp phần cứng
đạt hiệu suất cao nhất. Điều này bao gồm việc quản lý CPU, bộ nhớ, thiết bị lưu
trữ, và thiết bị nhập/xuất.
Cung cấp hệ thống lệnh: Hệ điều hành cung cấp một bộ lệnh cơ bản cho việc điều
hành máy, cho phép người dùng và các ứng dụng thực hiện các tác vụ một cách linh hoạt và mạnh mẽ.
Cung ứng giao diện người dùng: OS cung cấp giao diện người dùng, dù là dạng
dòng lệnh (CLI) hay giao diện đồ họa (GUI), để hỗ trợ người dùng và các ứng dụng
trong việc tương tác với máy tính một cách thuận tiện.
Tăng cường tiện ích sử dụng: Hệ điều hành làm cho hệ thống máy tính dễ sử dụng
và hiệu quả hơn, giúp người dùng tiết kiệm thời gian và nâng cao năng suất làm việc.
Ẩn chi tiết phần cứng: OS giấu đi các chi tiết phức tạp của phần cứng từ người
dùng, giúp họ tập trung vào công việc mà không cần lo lắng về cách thức hoạt động của phần cứng.
Cải thiện trải nghiệm người dùng: Hệ điều hành cung cấp một giao diện dễ sử dụng,
giúp cải thiện trải nghiệm tổng thể trên hệ thống máy tính.
Làm trung gian giữa phần cứng và người dùng: OS hoạt động như một trung gian,
giúp người dùng dễ dàng truy cập và sử dụng các tài nguyên máy tính mà không
cần hiểu biết sâu về công nghệ.
Quản lý tài nguyên: Hệ điều hành quản lý tài nguyên của hệ thống, đảm bảo sự
phân phối và sử dụng hiệu quả các nguồn lực như CPU, bộ nhớ, và thiết bị lưu trữ.
Giám sát sử dụng tài nguyên: OS theo dõi những người và chương trình đang sử
dụng tài nguyên, giải quyết xung đột và đảm bảo sự công bằng trong việc phân bổ tài nguyên.
Cung cấp và chia sẻ tài nguyên: Hệ điều hành cung cấp các tài nguyên cần thiết
cho người dùng và ứng dụng, đồng thời hỗ trợ chia sẻ tài nguyên một cách công
bằng và hiệu quả giữa các quy trình. 8
Những mục tiêu và nhiệm vụ này phản ánh sự đa dạng và phức tạp của các chức
năng mà hệ điều hành cần thực hiện để đảm bảo hoạt động ổn định và hiệu quả của hệ thống máy tính.
PHẦN II : GIỚI THIỆU VỀ BẢO MẬT HỆ ĐIỀU HÀNH
(SECURITY - INTRO)
CHƯƠNG 1: GIỚI THIỆU CHUNG
1. Bảo mật trong hệ điều hành là gì ?
Bảo mật của các hệ thống máy tính là một chủ đề cực kỳ quan trọng, và tầm quan
trọng của nó chỉ ngày càng tăng lên. Rất nhiều tiền bạc đã bị mất và cuộc sống của
nhiều người đã bị ảnh hưởng khi việc bảo mật máy tính thất bại. Các cuộc tấn công
vào hệ thống máy tính đã trở nên phổ biến đến mức gần như không thể tránh khỏi
trong hầu hết mọi tình huống khi thực hiện việc tính toán. Nói chung, tất cả các
thành phần của một hệ thống máy tính có thể bị tấn công, và lỗi trong bất kỳ thành
phần nào trong số chúng cũng có thể tạo cơ hội cho kẻ tấn công thực hiện điều gì
đó chúng ta muốn ngăn chặn. Nhưng hệ điều hành đặc biệt quan trọng từ góc độ bảo mật.
2. Tại sao bảo mật hệ điều hành lại quan trọng ?
Đầu tiên, hầu hết mọi thứ đều chạy trên hệ điều hành. Theo quy tắc, nếu phần mềm
đang chạy trên hệ điều hành, một phần mềm trung gian, hay thứ gì khác, thì nó
không thực sự an toàn, thứ nằm phía trên nó cũng sẽ không an toàn. Đó giống như
xây một ngôi nhà trên cát. Chúng ta có thể xây một cấu trúc vững chãi, nhưng một
trận lụt vẫn có thể cuốn trôi cơ sở phía dưới ngôi nhà , phá hủy hoàn toàn nó bất
chấp sự cẩn thận trong việc xây dựng. Tương tự, ứng dụng có thể không có lỗi bảo
mật nào của riêng nó, nhưng nếu kẻ tấn công có thể lợi dụng phần mềm phía dưới
để đánh cắp thông tin của, làm sập chương trình, hoặc gây hại theo cách khác, nỗ
lực trong việc bảo vệ mã của mình có thể trở nên vô ích.
Điểm này đặc biệt quan trọng đối với hệ điều hành. Chúng ta có thể không quan
tâm đến an ninh của một máy chủ web cụ thể hoặc hệ thống cơ sở dữ liệu nếu
không chạy phần mềm đó, và có thể không quan tâm đến an ninh của một nền tảng
trung gian nào đó mà không sử dụng, nhưng mọi người đều sử dụng hệ điều hành,
và có tương đối ít lựa chọn để chạy. Do đó, lỗi bảo mật trong một hệ điều hành,
đặc biệt là một hệ điều hành được sử dụng rộng rãi, có ảnh hưởng lớn đến nhiều
người dùng và nhiều phần mềm. 9
Lý do khác khiến an ninh hệ điều hành rất quan trọng là cuối cùng tất cả phần mềm
của chúng ta đều dựa vào sự hoạt động đúng đắn của phần cứng cơ bản: bộ xử lý,
bộ nhớ và các thiết bị ngoại vi và hệ điều hành có quyền kiểm soát cuối cùng đối
với những tài nguyên phần cứng có trong máy tính.
Một thách thức khác trong việc bảo mật hệ điều hành là phần lớn hệ điều hành
được thiết kế để hỗ trợ nhiều quy trình cùng một lúc. Có nhiều cơ chế trong hệ điều
hành nhằm phân chia các quy trình khỏi nhau và bảo vệ các phần cứng chia sẻ khỏi
việc bị sử dụng theo cách làm ảnh hưởng đến các quy trình khác. Nếu mọi quy
trình đều có thể được tin tưởng để làm bất cứ điều gì nó muốn với bất kỳ tài nguyên
phần cứng nào và bất kỳ mảnh dữ liệu nào trên máy mà không làm hại đến quy
trình khác, việc bảo mật hệ thống sẽ dễ dàng hơn nhiều. Tuy nhiên, chúng ta thường
không tin tưởng mọi thứ một cách tuyệt đối. Khi tải xuống và chạy một đoạn mã
từ một trang web mà chưa từng truy cập trước đây, chúng ta có thực sự muốn nó
có thể xóa mọi tệp từ đĩa , kết thúc tất cả các quy trình khác , và bắt đầu sử dụng
giao diện mạng để gửi email rác đến các máy khác không? Có lẽ không, nhưng nếu
bạn là chủ sở hữu của máy tính của mình, bạn có quyền làm tất cả những điều đó,
nếu đó là điều bạn muốn làm. Và trừ khi hệ điều hành cẩn thận, bất kỳ quy trình
nào nó chạy, bao gồm cả quy trình chạy đoạn mã bạn đã tải xuống, có thể làm bất
cứ điều gì bạn có thể làm.
3. Góc độ và thách thức của bảo mật hệ điều hành
Xem xét vấn đề bảo mật hệ điều hành từ một góc độ khác. Một vai trò của hệ điều
hành là cung cấp các trừu tượng hữu ích cho các chương trình ứng dụng để xây
dựng trên đó. Những ứng dụng này phải dựa vào các triển khai trừu tượng của OS
để hoạt động như chúng được định nghĩa. Thường xuyên, một phần của định nghĩa
của các trừu tượng như vậy là hành vi bảo mật của chúng. Ví dụ, chúng ta mong
đợi rằng hệ thống tệp của hệ điều hành sẽ thực thi các hạn chế truy cập mà nó được
cho là phải thực thi. Các ứng dụng có thể xây dựng dựa trên kỳ vọng này để đạt
được các mục tiêu bảo mật mà họ yêu cầu, như dựa vào các đảm bảo truy cập tệp
để đảm bảo rằng một tệp họ đã chỉ định là không thể viết không bị thay đổi. Nếu
các ứng dụng không thể dựa vào việc triển khai đúng đắn của các đảm bảo bảo mật
cho các trừu tượng OS, thì họ không thể sử dụng các trừu tượng này để đạt được
các mục tiêu bảo mật của riêng họ. Ít nhất, điều đó có nghĩa là nhiều công việc hơn
cho các nhà phát triển ứng dụng, vì họ sẽ cần phải thực hiện các biện pháp bổ sung
để đạt được các mục tiêu bảo mật mong muốn của họ. Lấy vào tài khoản cuộc thảo
luận trước đó của chúng ta, họ thường sẽ không thể đạt được các mục tiêu này nếu
các trừu tượng họ phải dựa vào (như bộ nhớ ảo hoặc một chính sách lập lịch được
định nghĩa rõ ràng) không thể được tin cậy. 10
Rõ ràng, bảo mật hệ điều hành là quan trọng, nhưng khó đạt được. Vậy chúng ta
làm gì để bảo mật hệ điều hành của mình? Giải quyết câu hỏi này đã là một thách
thức cho nhiều thế hệ nhà khoa học máy tính, và vẫn chưa có câu trả lời hoàn chỉnh.
Nhưng có một số nguyên tắc và công cụ quan trọng mà chúng ta có thể sử dụng để
bảo mật hệ điều hành. Những công cụ này thường được xây dựng vào bất kỳ hệ
điều hành dùng chung nào mà chúng ta có thể làm việc với, và chúng thay đổi
những gì có thể được thực hiện với hệ thống đó và cách chúng ta thực hiện nó. Vì
vậy, có thể không quan tâm đến bảo mật, nhưng chúng ta vẫn cần hiểu những gì hệ
điều hành làm để tự bảo vệ để cũng hiểu cách làm cho hệ thống làm những gì chúng ta mong muốn.
CHƯƠNG 2: CẦN LÀM GÌ ĐỂ BẢO MẬT HỆ ĐIỀU HÀNH
BẢO VỆ MÁY TÍNH TỐT NHẤT
Chúng ta khó có thể đạt được sự bảo vệ tốt trừ khi chúng ta có một cái nhìn toàn
diện về những gì chúng ta đang cố gắng bảo vệ khi nói rằng hệ điều hành của chúng
ta nên được bảo mật. May mắn thay, câu trả lời cho một hệ điều hành là dễ dàng,
ít nhất ở mức độ cao: tất cả mọi thứ.
Câu trả lời này có thể không hoàn toàn là tốt nhất, nhưng tốt nhất là phải có một
sự hiểu biết thực tế về những hệ quả rộng lớn của bảo mật hệ điều hành.
Một hệ điều hành thông thường có quyền kiểm soát hoàn toàn (hoặc hầu hết) tất cả
phần cứng trên máy và có thể làm bất cứ điều gì phần cứng cho phép. Điều đó có
nghĩa là nó có thể kiểm soát bộ xử lý, đọc và viết tất cả các thanh ghi, kiểm tra bất
kỳ vị trí bộ nhớ chính nào và thực hiện bất kỳ hoạt động nào mà một trong những
thiết bị ngoại vi của nó hỗ trợ. Kết quả là, một số việc mà hệ điều hành có thể làm bao gồm:
Kiểm tra hoặc thay đổi bộ nhớ của bất kỳ quy trình nào
Đọc, viết, xóa hoặc làm hỏng bất kỳ tệp nào trên bất kỳ phương tiện lưu trữ vĩnh
viễn nào có thể ghi được, bao gồm ổ cứng và ổ flash
Thay đổi lịch trình hoặc thậm chí dừng thực thi của bất kỳ quy trình nào Gửi bất
kỳ thông điệp nào đến bất cứ đâu, bao gồm các phiên bản đã được thay đổi của
những gì một quy trình muốn gửi
Kích hoạt hoặc vô hiệu hóa bất kỳ thiết bị ngoại vi nào
Cấp quyền cho bất kỳ quy trình nào truy cập vào tài nguyên của bất kỳ quy trình nào khác
Tùy ý tước bỏ bất kỳ tài nguyên nào mà một quy trình kiểm soát 11
Phản hồi bất kỳ lời gọi hệ thống nào bằng một lời nói dối có hại nhất
Về bản chất, các quy trình phụ thuộc vào hệ điều hành. Gần như không thể cho
một quy trình 'bảo vệ' bất kỳ phần nào của nó khỏi một hệ điều hành độc hại. Chúng
ta thường giả định rằng hệ điều hành của mình không thực sự độc hại, nhưng một
lỗi cho phép một quy trình độc hại khiến hệ điều hành hoạt động sai lệch gần như
tồi tệ như vậy, vì nó có thể tiềm ẩn cho phép quy trình đó giành lấy bất kỳ quyền
lực nào của chính hệ điều hành. Điểm này nên khiến chúng ta suy nghĩ rất nghiêm
túc về tầm quan trọng của việc thiết kế hệ điều hành an toàn và, phổ biến hơn, áp
dụng các bản vá bảo mật cho bất kỳ hệ điều hành nào bạn đang chạy. Lỗi bảo mật
trong hệ điều hành của bạn có thể hoàn toàn làm tổn hại đến mọi thứ về máy tính
mà hệ thống đó chạy trên, vì vậy việc ngăn chặn chúng và vá bất kỳ lỗi nào được
phát hiện là vô cùng quan trọng.
CHƯƠNG 3: MỤC TIÊU VÀ CHÍNH SÁCH BẢO MẬT
1. Mục tiêu bảo mật cơ bản
Khi chúng ta nói muốn một hệ điều hành, hoặc bất kỳ hệ thống nào, được bảo mật,
điều đó thật ra khá mơ hồ. Điều chúng ta thực sự muốn nói là có những việc chúng
ta muốn xảy ra trong hệ thống và những việc chúng ta không muốn xảy ra, và
chúng ta muốn một độ tin cậy cao rằng chúng ta sẽ nhận được những gì chúng ta
muốn. Như trong hầu hết các khía cạnh khác của cuộc sống, chúng ta thường phải
trả tiền cho những gì chúng ta nhận được, vì vậy đáng giá để suy nghĩ về chính xác
những thuộc tính và hiệu ứng bảo mật mà chúng ta thực sự cần và sau đó chỉ trả
tiền cho những thứ đó, không phải cho những thứ khác mà chúng ta không cần.
Điều này có nghĩa là chúng ta muốn xác định các mục tiêu mà chúng ta có cho
hành vi liên quan đến bảo mật của hệ thống của mình và chọn những phương pháp
phòng thủ có khả năng đạt được những mục tiêu đó với một chi phí hợp lý.
Các nhà nghiên cứu về bảo mật đã suy nghĩ về vấn đề này một cách rộng rãi từ lâu.
Ở một cấp độ khái niệm cao, họ đã định nghĩa ba mục tiêu lớn liên quan đến bảo
mật thường gặp ở nhiều hệ thống, bao gồm cả hệ điều hành. Đó là:
Bảo mật thông tin: Nếu một thông tin nào đó được cho là nên được giấu kín khỏi
người khác, không cho họ tìm hiểu được thông tin đó. Ví dụ, bạn không muốn ai
đó biết số thẻ tín dụng của bạn - bạn muốn số đó được giữ kín.
Tính toàn vẹn: Nếu một thông tin hay thành phần của một hệ thống được cho là
nên ở một trạng thái cụ thể, không cho phép kẻ thù thay đổi nó. Ví dụ, nếu bạn đã
đặt mua trực tuyến một pizza pepperoni, bạn không muốn một kẻ đùa cợt ác ý thay
đổi đơn hàng của bạn thành 1000 pizza cá cơm. Một khía cạnh quan trọng của tính
toàn vẹn là tính xác thực. Thường xuyên quan trọng phải chắc chắn không chỉ 12
thông tin không bị thay đổi, mà còn phải được tạo ra bởi một bên cụ thể chứ không phải bởi kẻ thù.
Khả năng sẵn có: Nếu một thông tin hay dịch vụ nào đó được cho là nên sẵn có
cho việc sử dụng của bạn hoặc người khác, hãy đảm bảo rằng kẻ tấn công không
thể ngăn cản việc sử dụng nó. Ví dụ, nếu doanh nghiệp của bạn đang có một đợt
giảm giá lớn, bạn không muốn đối thủ cạnh tranh của mình có thể chặn các con
đường xung quanh cửa hàng của bạn, ngăn khách hàng tiếp cận với bạn.
2. Một số khía cạnh khác của bảo mật hệ điều hành
Một khía cạnh quan trọng bổ sung của ba mục tiêu này là chúng ta muốn có sự chia
sẻ được kiểm soát trong hệ thống của mình. Chúng ta chia sẻ bí mật của mình với
một số người nhưng không phải với người khác. Chúng ta cho phép một số người
thay đổi cơ sở dữ liệu của doanh nghiệp mình, nhưng không phải bất kỳ ai. Một số
hệ thống cần được làm cho sẵn có cho một nhóm người dùng ưu tiên cụ thể (như
những người đã trả tiền để chơi trò chơi trực tuyến của bạn) và không phải cho
những người khác (những người không trả tiền). Ai là người yêu cầu rất quan trọng,
trong máy tính cũng như trong cuộc sống hàng ngày.
Một khía cạnh quan trọng khác của bảo mật đối với các hệ thống máy tính là chúng
ta thường muốn chắc chắn rằng khi ai đó nói với chúng ta điều gì đó, họ không thể
sau đó phủ nhận việc họ đã làm. Khía cạnh này thường được gọi là không thể từ
chối. Càng khó và đắt đỏ hơn cho ai đó để phủ nhận hành động của họ, thì càng dễ
dàng để chúng ta giữ họ chịu trách nhiệm về những hành động đó, và do đó, mọi
người càng ít có khả năng thực hiện các hành động ác ý. Sau cùng, họ có thể sẽ bị
bắt và sẽ gặp rắc rối khi phủ nhận việc họ đã làm.
3. Mục tiêu của bảo mật hệ điều hành
Đây là những mục tiêu lớn, chung chung. Đối với một hệ thống thực tế, bạn cần
phải đi sâu vào các mục tiêu cụ thể, chi tiết hơn. Trong một hệ điều hành thông
thường, ví dụ, chúng ta có thể có một mục tiêu bảo mật thông tin nêu rằng không
gian bộ nhớ của một quá trình không thể bị đọc một cách tùy ý bởi một quá trình
khác. Chúng ta có thể có một mục tiêu tính toàn vẹn nêu rằng nếu một người dùng
viết một bản ghi vào một tệp cụ thể, một người dùng khác không được phép viết
tệp đó không thể thay đổi bản ghi. Chúng ta có thể có một mục tiêu về khả năng
sẵn có nêu rằng một quá trình chạy trên hệ thống không thể chiếm hữu CPU và
ngăn các quá trình khác nhận được phần CPU của họ. Nếu bạn suy ngẫm lại những
gì bạn đã học về trừu tượng hóa quá trình, quản lý bộ nhớ, lập lịch, hệ thống tệp,
IPC, và các chủ đề khác từ lớp học này, bạn nên có thể nghĩ ra một số mục tiêu bảo 13
mật thông tin, tính toàn vẹn, và khả năng sẵn có khác mà chúng ta có thể muốn
trong hệ điều hành của mình.
Đối với bất kỳ hệ thống cụ thể nào, ngay cả các mục tiêu ở cấp độ này cũng không
đủ cụ thể. Mục tiêu tính toàn vẹn được ám chỉ ở trên, nơi một tệp của người dùng
không nên bị ghi đè bởi một người dùng khác không được phép làm như vậy, cho
bạn một manh mối về độ cụ thể thêm mà chúng ta cần trong các mục tiêu bảo mật
của chúng ta cho một hệ thống cụ thể. Có thể có một số người dùng nào đó nên có
thể ghi đè lên tệp đó, như có thể xảy ra khi hai người đang cộng tác viết một báo
cáo. Nhưng điều đó không có nghĩa là một người dùng thứ ba không liên quan nên
có thể viết tệp đó, nếu anh ta không cộng tác về báo cáo được lưu trữ ở đó. Chúng
ta cần có khả năng chỉ định chi tiết như vậy trong các mục tiêu bảo mật của mình.
Hệ điều hành được viết để được sử dụng bởi nhiều người khác nhau với nhiều nhu
cầu khác nhau, và bảo mật hệ điều hành nên phản ánh sự tổng quát đó. Những gì
chúng ta muốn trong các cơ chế bảo mật cho hệ điều hành là sự linh hoạt trong
việc mô tả các mục tiêu bảo mật chi tiết của chúng ta.
Cuối cùng, tất nhiên, phần mềm hệ điều hành phải cố gắng hết sức để thực thi
những mục tiêu bảo mật linh hoạt đó, điều này có nghĩa là chúng ta sẽ cần phải mã
hóa những mục tiêu đó thành các hình thức mà phần mềm có thể hiểu được. Chúng
ta thường phải chuyển đổi sự hiểu biết mơ hồ của mình về các mục tiêu bảo mật
của mình thành các chính sách bảo mật cụ thể, rõ ràng. Ví dụ, trong trường hợp
của tệp được mô tả ở trên, chúng ta có thể muốn chỉ định một chính sách như 'người
dùng A và B có thể viết vào tệp X, nhưng không có người dùng nào khác có thể
viết nó.' Với mức độ cụ thể đó, được hỗ trợ bởi các cơ chế được thiết kế và triển
khai cẩn thận, chúng ta có thể hy vọng đạt được các mục tiêu bảo mật của mình.
Lưu ý một hậu quả quan trọng cho bảo mật hệ điều hành: trong nhiều trường hợp,
một hệ điều hành sẽ có các cơ chế cần thiết để thực hiện một chính sách bảo mật
mong muốn với một mức độ đảm bảo cao trong việc áp dụng đúng đắn của nó,
nhưng chỉ khi có ai đó nói cho hệ điều hành chính xác chính sách đó là gì. Với một
số ngoại lệ quan trọng (như duy trì không gian địa chỉ của một quá trình riêng tư
trừ khi được chỉ đạo khác), hệ điều hành chỉ cung cấp các cơ chế chung có thể thực
hiện nhiều chính sách cụ thể. Tuy nhiên, không có thiết kế thông minh của các
chính sách và áp dụng cẩn thận các cơ chế, những gì hệ điều hành nên hoặc có thể
làm có thể không phải là những gì hệ điều hành của bạn sẽ làm.
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG BẢO MẬT HỆ ĐIỀU HÀNH 14
Ít người trong số các bạn sẽ tự xây dựng hệ điều hành của mình, hay thậm chí thực
hiện những thay đổi nghiêm túc đối với bất kỳ hệ điều hành hiện có nào, nhưng
chúng tôi kỳ vọng nhiều bạn sẽ xây dựng các hệ thống phần mềm lớn theo một
cách nào đó. Kinh nghiệm của nhiều nhà khoa học máy tính với thiết kế hệ thống
đã chỉ ra rằng có một số nguyên tắc thiết kế hữu ích trong việc xây dựng các hệ
thống có yêu cầu bảo mật. Những nguyên tắc này được Jerome Saltzer và Michael
Schroeder đề xuất lần đầu tiên trong một bài báo có ảnh hưởng, mặc dù một số
trong chúng đến từ những quan sát trước đó của người khác. Mặc dù không có tác
giả gốc hay những người bình luận sau này tuyên bố rằng việc tuân theo chúng sẽ
đảm bảo rằng hệ thống của bạn an toàn, việc chú ý đến chúng đã được chứng minh
là dẫn đến các hệ thống an toàn hơn, trong khi bạn bỏ qua chúng thì tự mình chịu rủi ro.
Nếu thực sự đang xây dựng một hệ thống phần mềm lớn, thì việc tìm hiểu bài
báo này (hoặc các bình luận chi tiết hơn về nó) và nghiên cứu các khái niệm một
cách cẩn thận sẽ đáng giá rất nhiều.
Kinh tế về cơ chế (Economy of mechanism) - Điều này cơ bản có nghĩa là giữ hệ
thống của bạn càng nhỏ và đơn giản càng tốt. Hệ thống đơn giản có ít lỗi hơn và
dễ dàng hiểu được hành vi của chúng hơn. Nếu bạn không hiểu hành vi của hệ
thống, bạn khó có thể biết liệu nó có đạt được mục tiêu bảo mật của mình hay không.
Mặc định an toàn (Fail-safe defaults)- Mặc định để an toàn, không phải không an
toàn. Nếu các chính sách có thể được thiết lập để xác định hành vi của hệ thống,
hãy có mặc định cho những chính sách đó an toàn hơn, không phải ít an toàn hơn.
Kiểm soát toàn diện (Complete mediation) - Đây là một thuật ngữ bảo mật có nghĩa
là bạn nên kiểm tra xem một hành động được thực hiện có đáp ứng các chính sách
bảo mật mỗi lần hành động đó được thực hiện.
Thiết kế mở (Open design) - Giả định kẻ thù của bạn biết mọi chi tiết của thiết kế
của bạn. Nếu hệ thống vẫn đạt được mục tiêu bảo mật của mình, bạn đang ở trong
tình trạng tốt. Nguyên tắc này không nhất thiết có nghĩa là bạn thực sự nói với mọi
người tất cả các chi tiết, nhưng dựa vào giả định rằng kẻ tấn công đã tìm hiểu mọi
thứ. Trên thực tế, anh ta thường đã biết.
Tách biệt quyền hạn (Separation of privilege) - Yêu cầu các bên hoặc thông tin xác
thực riêng biệt để thực hiện các hành động quan trọng. Ví dụ, xác thực hai yếu tố,
nơi bạn sử dụng cả mật khẩu và sở hữu một phần cứng để xác định danh tính, an
toàn hơn là sử dụng bất kỳ phương pháp nào đó một mình. 15
Quyền hạn tối thiểu (Least privilege) - Cấp cho người dùng hoặc quy trình những
quyền hạn tối thiểu cần thiết để thực hiện các hành động bạn muốn cho phép. Bạn
càng cấp nhiều quyền hạn cho một bên, nguy cơ họ lạm dụng những quyền hạn đó
càng lớn. Ngay cả khi bạn tin tưởng rằng bên đó không có ác ý, nếu họ mắc lỗi,
một kẻ thù có thể tận dụng lỗi của họ để sử dụng quyền hạn thừa của họ theo cách có hại.
Cơ chế ít chung nhất (Least common mechanism)- Đối với các người dùng hoặc
quy trình khác nhau, sử dụng các cấu trúc dữ liệu hoặc cơ chế riêng biệt để xử lý
chúng. Ví dụ, mỗi quy trình nhận được bảng trang riêng của mình trong một hệ
thống bộ nhớ ảo, đảm bảo rằng một quy trình không thể truy cập vào các trang của quy trình khác.
Tính chấp nhận (Acceptability) - Một tính chất quan trọng không được nhiều lập
trình viên yêu thích. Nếu người dùng của bạn không sử dụng nó, hệ thống của bạn
vô giá trị. Quá nhiều hệ thống bảo mật hứa hẹn đã bị bỏ rơi vì chúng yêu cầu quá
nhiều từ người dùng của mình.
Những lời khuyên trên không phải là những lời khuyên duy nhất hữu ích về thiết
kế các hệ thống an toàn. Còn rất nhiều tài liệu tốt về bước tiếp theo, chuyển đổi
một thiết kế tốt thành mã code đạt được mục tiêu bảo mật bạn dự định, cũng như
các tài liệu khác về cách đánh giá liệu hệ thống bạn đã xây dựng có thực sự đáp
ứng những mục tiêu đó hay không. Những vấn đề này nằm ngoài phạm vi của khóa
học này, nhưng lại vô cùng quan trọng khi bạn đến lúc cần xây dựng các hệ thống lớn, phức tạp.
Để thảo luận về các phương pháp lập trình an toàn, bạn có thể bắt đầu với tác phẩm
của Seacord, nếu bạn làm việc với ngôn ngữ C. Nếu bạn làm việc với một ngôn
ngữ khác, bạn nên tìm kiếm một tài liệu tương tự cụ thể cho ngôn ngữ đó, vì nhiều
vấn đề lập trình an toàn liên quan đến chi tiết của ngôn ngữ. Để có một cách tiếp
cận toàn diện về cách đánh giá liệu hệ thống của bạn có an toàn không, hãy bắt đầu
với công trình của Dowd và cộng sự.
CHƯƠNG 5: KHÁI NIỆM CƠ BẢN VỀ BẢO MẬT HỆ ĐIỀU HÀNH 1. Khái niệm
Trong một hệ điều hành điển hình, chúng ta có một số mục tiêu bảo mật, tập trung
vào các khía cạnh khác nhau của bảo mật thông tin, toàn vẹn, và khả dụng. Một số
mục tiêu này có xu hướng được tích hợp sẵn vào mô hình hệ điều hành, trong khi 16
những mục tiêu khác được kiểm soát bởi chủ sở hữu hoặc người dùng của hệ thống.
Các mục tiêu tích hợp sẵn là những mục tiêu cực kỳ phổ biến, hoặc phải được đảm
bảo để làm cho các mục tiêu cụ thể hơn có thể đạt được. Hầu hết các mục tiêu tích
hợp sẵn liên quan đến việc kiểm soát quyền truy cập của quy trình đến các bộ phận của phần cứng.
Điều này là bởi vì phần cứng được chia sẻ bởi tất cả các quy trình trên một hệ thống,
và trừ khi việc chia sẻ được kiểm soát cẩn thận, một quy trình có thể can thiệp vào
mục tiêu bảo mật của quy trình khác. Các mục tiêu tích hợp sẵn khác liên quan đến
các dịch vụ mà hệ điều hành cung cấp, như hệ thống tệp, quản lý bộ nhớ, và giao
tiếp giữa các quy trình. Nếu những dịch vụ này không được kiểm soát cẩn thận,
các quy trình có thể lật đổ mục tiêu bảo mật của hệ thống.
2. Xử lý quy trình và bảo mật
Rõ ràng, rất nhiều bảo mật hệ thống sẽ liên quan đến việc xử lý quy trình. Nếu hệ
điều hành có thể duy trì sự phân chia rõ ràng của các quy trình mà chỉ có thể bị phá
vỡ với sự giúp đỡ của hệ điều hành, thì cả phần cứng chia sẻ lẫn dịch vụ hệ điều
hành không thể được sử dụng để lật đổ các mục tiêu bảo mật của chúng ta. Yêu
cầu đó ngụ ý rằng hệ điều hành cần phải cẩn thận khi cho phép sử dụng phần cứng
và các dịch vụ của mình. Trong nhiều trường hợp, hệ điều hành có cơ hội tốt để áp
dụng sự cẩn thận như vậy. Ví dụ, hệ điều hành kiểm soát bộ nhớ ảo, từ đó hoàn
toàn kiểm soát địa chỉ bộ nhớ vật lý nào mà mỗi quy trình có thể truy cập. Sự hỗ
trợ của phần cứng ngăn chặn một quy trình từ việc thậm chí gọi một địa chỉ bộ nhớ
vật lý không được ánh xạ vào không gian bộ nhớ ảo của nó. (Những người làm
việc về phần mềm trong chúng ta nên nhớ cảm ơn những người làm việc về phần
cứng vì tất cả những thứ tuyệt vời họ đã cung cấp cho chúng ta để làm việc.)
3. Lời gọi hệ thống trong hệ điều hành
Các lời gọi hệ thống cung cấp cho hệ điều hành một cơ hội khác để cung cấp bảo
vệ. Trong hầu hết các hệ điều hành, các quy trình truy cập các dịch vụ hệ thống
bằng cách thực hiện một lời gọi hệ thống rõ ràng, như đã được thảo luận trong các
chương trước. Như bạn đã học, các lời gọi hệ thống chuyển chế độ thực thi từ chế
độ người dùng của bộ xử lý sang chế độ giám sát của nó, kích hoạt một phần mã
hệ điều hành phù hợp khi làm như vậy. Mã đó có thể xác định quy trình nào đã
thực hiện lời gọi hệ thống và dịch vụ nào mà quy trình yêu cầu. Trước đây, chúng
ta chỉ nói về cách điều này có thể cho phép hệ điều hành gọi đoạn mã hệ thống phù
hợp để thực hiện dịch vụ, và để theo dõi ai để trả lại quyền kiểm soát khi dịch vụ
đã được hoàn thành. Nhưng cùng một cơ chế cung cấp cho hệ điều hành cơ hội để
kiểm tra liệu dịch vụ được yêu cầu có nên được cho phép theo chính sách bảo mật
của hệ thống hay không. Vì quyền truy cập vào các thiết bị ngoại vi thông qua trình
điều khiển thiết bị, thường cũng được truy cập qua lời gọi hệ thống, cùng một cơ 17
chế có thể đảm bảo áp dụng đúng chính sách bảo mật cho quyền truy cập phần cứng.
Khi một quy trình thực hiện một lời gọi hệ thống, hệ điều hành sẽ sử dụng định
danh quy trình trong khối kiểm soát quy trình hoặc cấu trúc tương tự để xác định
danh tính của quy trình. Hệ điều hành sau đó có thể sử dụng các cơ chế kiểm soát
truy cập để quyết định liệu quy trình được xác định có được phép thực hiện hành
động được yêu cầu hay không. Nếu có, hệ điều hành hoặc là tự thực hiện hành
động đó thay mặt cho quy trình hoặc sắp xếp cho quy trình thực hiện nó mà không
cần can thiệp thêm của hệ thống. Nếu quy trình không được phép, hệ điều hành có
thể đơn giản tạo ra một mã lỗi cho lời gọi hệ thống và trả lại quyền kiểm soát cho
quy trình, nếu thuật toán lập lịch cho phép.
CHƯƠNG 6: TỔNG KẾT
Bảo mật của hệ điều hành là một yếu tố quan trọng không chỉ cho chính hệ điều
hành mà còn cho cả các ứng dụng chạy trên nó. Các lỗ hổng bảo mật trong phần
mềm này có thể dẫn đến những hậu quả nghiêm trọng, với khả năng gây ra thiệt
hại không giới hạn. Trong bối cảnh đó, việc đảm bảo bảo mật cho hệ thống là một
nhiệm vụ đầy thách thức nhưng không phải là không thể. Có một số nguyên tắc
thiết kế đã được xác định qua thời gian, những nguyên tắc này đã chứng minh là
có giá trị không chỉ trong việc thiết kế hệ điều hành mà còn trong việc phát triển
bất kỳ hệ thống phần mềm lớn nào.
Một phần quan trọng của việc đạt được bảo mật trong hệ điều hành là xác định rõ
ràng các mục tiêu bảo mật cần đạt được. Những mục tiêu này thường xoay quanh
các khía cạnh như bảo mật thông tin, toàn vẹn dữ liệu, và khả dụng của hệ thống.
Tùy thuộc vào yêu cầu cụ thể của mỗi hệ thống, các mục tiêu bảo mật cụ thể có thể
thay đổi, điều này dẫn đến việc các hệ thống khác nhau sẽ cần áp dụng các chính
sách bảo mật khác nhau để đáp ứng nhu cầu của mình. Trong quá trình thiết kế hệ
điều hành, một phương pháp tiếp cận phổ biến là phân tách giữa các chính sách
bảo mật cụ thể - được thiết lập để đáp ứng nhu cầu của từng hệ thống riêng lẻ - và
các cơ chế chung - được sử dụng để thực hiện các chính sách bảo mật trên tất cả
các hệ thống. Phương pháp tiếp cận này cho phép tạo ra một khuôn khổ linh hoạt,
trong đó có thể dễ dàng điều chỉnh các chính sách bảo mật để phù hợp với các yêu
cầu bảo mật đang thay đổi mà không cần phải sửa đổi các cơ chế cơ bản của hệ thống. 18
PHẦN III: KẾT LUẬN
Chúng em xin chân thành biết ơn sâu sắc đến Thầy Trần Đăng Hoan về sự
tận tình, kiên nhẫn và sự hỗ trợ quý báu trong suốt quá trình thực hiện báo
cáo bài tập lớn về đề tài "Giới thiệu về bảo mật trong hệ điều hành". Thầy
không chỉ là người hướng dẫn mà còn là người bạn đồng hành đáng tin cậy,
luôn sẵn lòng chia sẻ kiến thức và kinh nghiệm để giúp em vượt qua những
khó khăn, hoàn thiện báo cáo một cách tốt nhất.
Nhờ sự chỉ dẫn của Thầy, chúng em đã có cơ hội hiểu sâu hơn về tầm quan
trọng của bảo mật trong hệ điều hành, nhận thức được các nguy cơ tiềm ẩn
cũng như biết cách áp dụng các biện pháp bảo mật hiệu quả. Qua đó, kiến
thức và kỹ năng mà chúng em thu được từ bài tập này sẽ là nền tảng vững
chắc cho sự phát triển và thành công trong tương lai.
Chúng em cam kết sẽ tiếp tục nỗ lực học tập và áp dụng những kiến thức mà
Thầy đã truyền đạt, để trở thành những chuyên gia uyên bác trong lĩnh vực
này. Một lần nữa, chúng em xin gửi lời biết ơn chân thành nhất đến Thầy
Trần Đăng Hoan và hy vọng sẽ tiếp tục nhận được sự hỗ trợ và định hướng
từ Thầy trong những hành trình học tập và nghiên cứu sắp tới. 19