Bài giảng An toàn hệ điều hành: Phần 2

35 10 0
Bài giảng An toàn hệ điều hành: Phần 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Nối tiếp phần 1, phần 2 của bài giảng tiếp tục trình bày các nội dung về các mô hình an toàn chính tắc cho phép mô tả và kiểm chứng các yêu cầu cần phải đạt với mô hình đề xuất; Giới thiệu cách thức giúp cho việc đánh giá và kiểm tra các yêu cầu an toàn với hệ thống máy tính thông qua việc xây dựng các đặc tả yêu cầu hệ thống. Mời các bạn cùng tham khảo để nắm nội dung chi tiết.

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG ***** PHẠM HOÀNG DUY BÀI GIẢNG AN TOÀN HỆ ĐIỀU HÀNH HÀ NỘI 2017 CHƯƠNG CÁC MƠ HÌNH AN TỒN Một khái niệm quan trọng thiết kế phân tích an tồn hệ thống mơ hình an tồn mơ hình tích hợp sách an toàn hay mục tiêu cần phải thực thi đảm bảo hệ thống Nói cách khác, u cầu an tồn mơ hình thể cách tường minh sách an tồn Mơ hình biểu diễn dạng ký hiệu (symbolic representation) sách ánh xạ mong muốn người đề sách thành tập luật mà phải tuân thủ hệ thống máy tính Chính sách thuật ngữ trừu tượng mô tả mục tiêu kết mà hệ thống phải đáp ứng hoàn thành theo cách an toàn chấp nhận Mơ hình an tồn ánh xạ mục tiêu khái quát trừu tượng sách vào phận hệ thống máy tính cách mơ tả cấu trúc liệu kỹ thuật cụ thể để thực thi sách an tồn Thơng thường, mơ hình an tồn biểu diễn ký hiệu tốn học, ý tưởng phân tích, mà chúng chuyển thành đặc tả hệ thống, sau phát triển thành đoạn mã chương trình Một số mơ hình an tồn thực thi quy định luật nhằm bảo vệ tính bí mật, số khác hướng tới việc bảo vệ tính tồn vẹn Các mơ hình tắc (formal model) thường dùng nhằm đảm bảo an ninh mức độ cao Bell-LaPadula Các mơ hình phi tắc (informal model) Clark-Wilson thường sử dụng cấu trúc khung cho biết cách thức sách an tồn biểu diễn thực thi 4.1 Vai trò đặc trưng mơ hình an tồn Thành cơng việc đạt mức độ an toàn cao hệ thống tùy thuộc vào mức độ cẩn thận trình thiết kế triển khai biện pháp kiểm soát an ninh Mục tiêu mơ hình an ninh biểu diễn yêu cầu an toàn hệ thống cách xác kiểm chứng 4.1.1 Các đặc trưng Mơ hình an tồn có đặc trưng sau:  Chính xác khơng mơ hồ Mơ hình an tồn biểu diễn thực thi sách an tồn hệ thống thuộc tính tính xác rõ ràng để mô tả cách đầy đủ trọn vẹn sách cần thực thi hệ thống Với hệ thống an tồn cao, mơ hình diễn giải ký hiệu toán học Tuy vậy, khái niệm việc lập mơ hình hệ thống khơng thiết cần cơng cụ tốn học đặc biệt sử dụng lại mơ hình sẵn có Khi này, biểu diễn mơ hình ngơn ngữ thơng thường hồn tồn đủ thỏa mãn thuộc tính 67  Đơn giản, khái quát dễ hiểu Thuộc tính giúp cho mơ hình nắm bắt triển khai cách nhanh chóng đầy đủ không với người thiết kế hay triển khai mà với người dùng cuối hệ thống Rõ ràng, khơng hiểu u cầu an tồn khơng cơng cụ tốn học chứng minh phù hợp mơ hình an tồn  Căn bản: xử lý thuộc tính an tồn khơng hạn chế cách q đáng (khơng thích đáng) chức khác hay việc triển khai hệ thống  Thể rõ ràng sách an tồn Mơ hình an tồn cần chứa đựng đầy đủ rõ ràng mong muốn yêu cầu thiết yếu việc vận hành hoạt động hệ thống 4.1.2 Vai trò Một vấn đề khiến cho hệ thống an tồn người thiết kế khơng xác định cách xác đắn yêu cầu an toàn Vấn đề phần liên quan đến độ tin cậy phần mềm khắc phục kỹ thuật xây dựng phần mềm (software engineering) tốt kết hợp với nguyên tắc kỹ thuật riêng biệt cho vấn đề an toàn Vấn đề khác xác định chức hay hành vi hệ thống xét yếu tố an tồn Việc khó khăn xét u cầu an tồn mơ tả chức hay hành vi cần phải xác nhiều Khi này, mơ hình an tồn khái qt (abstract model) đóng vai trị then chốt cách thức phát triển hệ thống cách tắc Hình 4-1 Hình 4-1 Tương quan bước phát triển mơ hình an tồn Mục tiêu phát triển hệ thống nhằm đảm bảo với mức độ chắn định việc triển khai hệ thống phù hợp với mơ hình an tồn lựa chọn Mức độ khác biệt chi tiết mơ hình triển khai thường lớn nên cần thêm bước trung gian nhằm đảm bảo tương ứng yêu cầu an toàn triển khai thực tế 68 Cách xây dựng khơng tắc giả định hệ thống khơng sử dụng cơng cụ tắc ngoại trừ việc định nghĩa mơ hình an tồn Các đặc tả cách phát triển tập trung vào chức hệ thống không trọng vào yêu cầu an ninh hay an toàn hệ thống Với cách xây dựng tắc, người thiết kế cần tới đặc tả chứng minh tắc cần có mơ hình an tồn tắc Về mức độ chi tiết đặc tả tắc (formal specification) tương đương với đặc tả chức song có độ xác rõ ràng cao nhiều Tính tắc đặc tả cung cấp sở toán học cho việc chứng minh toán học tương ứng đặc tả mơ hình an tồn đề Mơ hình an tồn dùng đặc tả an ninh cho hệ thống Việc giúp hạn chế lỗ hổng an toàn người thiết kế tập trung vào chức Trên thực tế, việc lập mơ hình an tồn tắc tiêu tốn nhiều công sức nhân lực mà đủ để làm tất Khi này, mơ hình an tồn đóng vai trị gợi ý cho người thiết kế để phát triển hệ thống an toàn cách phù hợp 4.2 Mơ hình máy trạng thái Mơ hình máy trạng thái thường sử dụng mơ hình biểu diễn hệ thống máy tính gần giống cách thức thực hệ điều hành Một trạng thái khái niệm trừu tượng bit hay byte hệ thống thay đổi hệ thống hoạt động Các ô nhớ nhớ hay đĩa cứng hay ghi xử lý trạng thái Các hàm chuyển dịch trạng thái cách khái quát lời gọi hàm hệ thống tới hệ điều hành cho biết xác trạng thái hay khơng thể thay đổi Mơ hình an tồn khơng sử dụng tất trạng thái chức hệ thống mà người thiết kế mơ hình lựa chọn biến liên quan đến vấn đề an ninh để lập mơ hình Việc xây dựng mơ hình an tồn máy trạng thái liên quan đến việc xác định thành phần mơ hình bao gồm biến, chức năng, quy định, với trạng thái an toàn khởi đầu Khi xác định tính an tồn trạng thái khởi đầu chức khà an toàn, việc suy diễn tốn học cho phép xác định tình trạng an toàn hệ thống chức sử dụng Các bước cụ thể để xây dựng mơ hình máy trạng thái sau: Xác định biến trạng thái liên quan  Các biến mô tả chủ thể đối tượng bên hệ thống, thuộc tính an tồn chúng quyền truy nhập chủ thể đối tượng Xác định trạng thái an toàn  Mô tả bất biến (invariant) biểu diễn quan hệ giá trị biến mà đảm bảo thay đổi trạng thái Xác định hàm chuyển dịch trạng thái 69  Các hàm mô tả thay đổi tới biến trạng thái gọi nguyên tắc hoạt động (rule of operation) Mục tiêu hàm hạn chế thay đổi mà hệ thống thực Chứng minh hàm đảm bảo trạng thái an tồn  Để đảm bảo mơ hình qn với mơ tả trạng thái an tồn, cần chứng minh với hàm hệ thống trạng thái an toàn trước sau thao tác Xác định trạng thái khởi tạo Lựa chọn giá trị cho biến trạng thái mà hệ thống bắt đầu trạng thái an toàn Chứng minh trạng thái khởi tạo an tồn theo mơ tả trạng thái an tồn Phần sử dụng ví dụ minh họa cho bước trình bày  Chính sách:  Người dùng đọc tài liệu quyền (clearance) có lớn phân loại (classification) tài liệu Đây dạng yêu cầu truy nhập tiêu biểu với quan có áp dụng chế đảm bảo an tồn thơng tin quan Mục tiêu xác định mô hình sử dụng cho hệ thống máy tính nhằm thực thi sách Áp dụng cách thức mơ tả kiểm sốt truy nhập phần trước, sách nêu biểu diễn mô tả chi tiết sau:  Mơ tả  Chủ thể có đọc đối tượng lớp truy nhập chủ thể lớn lớp truy nhập đối tượng  Chủ thể có ghi vào đối tượng lớp truy nhập chủ thể lớn lớp truy nhập đối tượng  Mô tả biến trạng thái S = Tập chủ thể O = Tập đối tượng sclass(s) = lớp truy nhập chủ thể s oclass(o) = lớp truy nhập đối tượng o A(s,o) = Tập chế độ truy nhập, nhận giá trị sau {r} Nếu chủ thể s đọc đối tượng o {w} Nếu chủ thể s ghi lên đối tượng o {r,w} Nếu đọc ghi  Nếu không đọc ghi contents(o) = nội dung đối tượng o subj = chủ thể hoạt động 70  Trạng thái hệ thống thời điểm biểu diễn tập giá trị tất biến trạng thái {S,O,sclass,oclass,A,contents,subj}  Trạng thái an tồn biểu diễn tốn học mơ tả thể sách truy nhập mong muốn Trạng thái thể bất biến (invariant) hệ thống Hệ thống an toàn s  S, o  O, Nếu r  A(s,o), sclass(s) ≥ oclass(o), Nếu w  A(s,o), oclass(o) ≥ sclass(s) Mặc dầu trông đơn giản song, chứng minh định nghĩa diễn giải nêu thể xác sách truy nhập nguyên thủy ban đầu Vậy nên, điều vô quan trọng thuộc tính mơ hình cần đơn giản rõ ràng người dùng thấy tương ứng với sách thực tế  Các hàm chuyển dịch trạng thái coi lời gọi hàm hay thủ tục tới tiện ích hệ thống mà tiện ích làm thay đổi biến trạng thái Sau số hàm tiêu biểu Create_object (o, c) Tạo đối tượng o với lớp truy nhập c Set_access (s, o, modes) Thiết lập chế độ truy nhập cho chủ thể s tới đối tượng o Create / Change_object (o, c) Thiết lập lớp truy nhập o tới c tạo Write_object (o, d) Ghi liệu d vào contents(o) Copy_object (from, to) Sao chép contents(from) tới contents(to) Append_data (o, d) Thêm liệu d tới contents(o) Nội dung hai hàm khởi tạo thiết lập mô tả sau Hàm 1: Create_object (o,c) Nếu o ∉ O 'O = O ∪ {o} 'oclass(o) = c Với s ∈ S, 'A(s,o) = ∅ Hàm Set_access (s,o, modes) Nếu s ∈ S o ∈ O {[r ∈ modes and sclass(s) ≥ oclass(o)] r ∉ modes) {[w ∈ modes oclass(o) ≥ sclass(s)] hoặcr w ∉ modes} 'A(s,o) = modes Với hàm cần chứng minh định lý sau: 71 bất biến (thuộc tính an toàn)  hàm chuyển dịch  bất biến Điều có nghĩa áp dụng hàm chuyển dịch, bất biến với trạng thái  Trạng thái ban đầu thể giá trị khởi tạo biến hệ thống {S0,O0,sclass0,oclass0,contents0,subj0} hay biểu diễn sau: s  S0, o  O0 sclass0(s) = c0 oclass0(o) = c0 A0(s,o) = {r,w} 4.3 Mô hình Harrison-Ruzzo-Ullman 4.3.1 Định nghĩa Mơ hình Harrison-Ruzzo-Ullman (HRU) hướng tới xử lý quyền truy nhập chủ thể tính tồn vẹn quyền Mơ hình cho phép quyền truy nhập thay đổi xác định chủ thể đối tượng cần tạo xóa Cuối cùng, mơ hình cho phép kiểm chứng thay đổi quyền có tác động đến yêu cầu an toàn đặt Nói cách khác, mơ hình cho phép đánh giá tính an tồn thao tác thay đổi quyền Mơ hình HRU định nghĩa sau:  Tập chủ thể S  Tập đối tượng O  Tập quyền truy nhập R  Ma trận truy nhập M | M = (Mso) sS, oO | Mso R 72  Tập câu lệnh C với câu lệnh c dạng c(x1, ,xk) if r1 in Ms1,o1 and if r2 in Ms2,o2 and if rm in Msm,om then op1 op2 opn end Các thao tác opi thao tác nguyên thủy sau enter r into (xs; xo) Thêm r vào M[xs, xo] delete r from (xs; xo) Loại bỏ r khỏi M[xs; xo] create subject xs Tạo hàng cột M create object xo Tạo cột M destroy subject xs Loại bỏ hàng cột tương ứng với xs destroy object xo Loại bỏ cột tương ứng với x0 Ví dụ minh họa cho việc biểu diễn chức hệ thống sử dụng cách mơ tả mơ hình HRU  Chủ thể s tạo file f (có quyền sở hữu o file này) có quyền đọc r, ghi w với file command create_files(s,f) create f enter o into Ms,f enter r into Ms,f enter w into Ms,f end  Chủ sở hữu s f cấp quyền truy nhập r cho chủ thể p command grant_read(s,p,f) if o in Ms,f then enter r into Mp,f end Vấn đề đặt câu lệnh nêu có đảm bảo thuộc tính an tồn hệ thống hay khơng 73 4.3.2 Các đặc trưng mơ hình HRU Mơ hình HRU có đặc điểm sau:  Các câu lệnh làm thay đổi quyền truy nhập đối tượng lưu lại thông qua thay đổi ma trận truy nhập Như vậy, ma trận truy nhập thể trạng thái hệ thống Nói cách khác mơ hình HRU sử dụng cách kiểm sốt thơng qua ma trận truy nhập  Mơ hình HRU biểu diễn sách an tồn thơng qua việc điều chỉnh cấp quyền truy nhập Để kiểm tra hệ thống tuân thủ sách an tồn, cần chứng minh khơng tồn cách cấp quyền truy nhập không mong muốn  Ma trận M coi rò rỉ quyền r tồn thao tác c thêm quyền r vào vị trí M mà trước khơng chứa r  Ma trận M an tồn với quyền r khơng có chuỗi lệnh c chuyển M sang trạng thái rị rỉ r  Trạng thái an tồn hệ thống mơ hình HRU diễn giải khơng tắc sau:  Truy nhập tài nguyên hệ thống mà khơng có đồng ý chủ sở hữu khơng thể  Người dùng cần có khả xác định liệu việc họ định làm dẫn đến việc rò rỉ quyền tới chủ thể không phép 4.3.3 Các kết HRU Mục tiêu mà mơ hình HRU hướng tới xây dựng mơ hình đơn giản áp dụng cho nhiều hệ thống an tồn khác Mơ hình chứng tỏ:  Với ma trận truy nhập M quyền r, việc kiểm chứng tính an tồn M với r khơng xác định Bài tốn an tồn khơng giải trường hợp tổng qt đầy đủ Với mơ hình hạn chế giải  Với hệ thống mà lệnh chứa thao tác (toán tử), với ma trận truy nhập M quyền r, việc kiểm chứng tính an tồn M xác định Với hệ thống lệnh chứa thao tác, việc kiểm chứng khơng xác định  Bài tốn an toàn cho hệ thống xác thực xác định số lượng chủ thể hữu hạn 4.4 Các mơ hình khác Phần trình bày mơ hình an tồn thơng tin tiêu biểu khác bao gồm mơ hình luồng thơng tin khái qt mơ hình hướng tới tính bí mật tồn vẹn hệ thống 74 4.4.1 Mơ hình luồng thơng tin Một hạn chế kỹ thuật dựa máy trạng thái thiếu mô tả luồng thơng tin thiếu sót mơ tả ràng buộc hay bất biến thuộc tính an ninh đối tượng chủ thể Ở khía cạch khác, vấn đề an toàn liên quan tới việc luân chuyển liệu cần xử lý ràng buộc hay hạn chế lên luân chuyển Đó lý cần có mơ hình luồng thơng tin Mơ hình luồng thơng tin biểu diễn cách thức liệu di chuyển đối tượng chủ thể hệ thống Khi chủ thể (chương trình) đọc từ đối tượng (file), liệu từ đối tượng di chuyển vào nhớ chủ thể Nếu có bí mật đối tượng bí mật chuyển tới nhớ chủ thể đọc Như vậy, bí mật bị lộ chủ thể ghi bí mật đối tượng Với thao tác đối tượng thao tác đọc luồng thông tin ( tức lấy liệu khỏi chủ thể) ghi luồng thông tin (tức cập nhật đối tượng với liệu mới) hay kết hợp hai Đồ thị luồng thông tin gồm đỉnh chủ thể đối tượng, cung biểu diễn thao tác chủ thể đối tượng, chiều thể hướng liệu tới đối tượng hay vào nhớ chủ thể Hình thể cách thức xây dựng đồ thị luồng thông tin từ ma trận truy nhập hệ thống Hình 4-2 Xây dựng luồng thông tin Luồng thông tin sử dụng để mô tả mục tiêu an toàn hệ thống (thuộc tính bí mật tồn vẹn) cách phân tích cung đồ thị luồng thơng tin  Tính bí mật Các cung đồ thị biểu diễn tồn đường dẫn mà liệu bị rị rỉ qua Chúng ta dùng đồ thị để xác định liệu có đối tượng bí mật o rị rỉ tới chủ thể khơng phép s Nếu tồn đường dẫn từ o tới s tính bí mật hệ thống bị xâm phạm  Tính tồn vẹn Khơng chủ thể với mức độ toàn vẹn cao lệ thuộc vào chủ thể hay đối tượng có mức tồn vẹn thấp 75 Hình 5-3 Quan hệ đối tượng hệ thống file Hệ thống file có số ràng buộc để chắn đối tượng hoạt động theo cách người dùng kỳ vọng Ví dụ quan hệ cấp (parent) nội dung (content) cần khơng mang quan hệ với Ngồi ra, có quan hệ ràng buộc tường minh thư mục cấp với thứ bên chứa // Thư mục cấp đối tượng chứa bên fact { all d: Dir, o: d.contents | o.parent = d } Biểu diễn ràng buộc sau với ∀𝑑 ∈ 𝐷𝑖𝑟, 𝑜 ∈ 𝑑 𝑐𝑜𝑛𝑡𝑒𝑛𝑡𝑠 | 𝑜 𝑝𝑎𝑟𝑒𝑛𝑡 = 𝑑 Hay với thư mục d o thuộc nội dung contents d cấp o d Nếu khơng có ràng buộc có tình huống, File có cấp thư mục gốc Root hay thư mục có cấp Phát biểu fact thể ràng buộc tường minh mô hình Khi Alloy tìm kiếm ví dụ (trạng thái hệ thống thỏa mãn ràng buộc) ví dụ vi phạm ràng buộc bị loại bỏ Nếu ràng buộc bị lỗi khơng thể tìm thấy ví dụ Khi khai báo Dir File thừa kế FSObject nghĩa khơng có đối tượng FSObject vừa File vừa thư mục Dir Nhưng cần có ràng buộc khơng có FSObject khơng thuộc hai loại đối tượng // Tất đối tượng hệ thống file phải File Dir fact { File + Dir = FSObject } Hệ thống có hhư mục gốc Root định nghĩa // Tồn thư mục gốc Root one sig Root extends Dir { } { no parent } Để chắn hệ thống kết nối cần định nghĩa ràng buộc 86 // Hệ thống file kết nối fact { FSObject in Root.*contents } Toán tử “in” xem ký hiệu “tập của” cịn tốn tử * biểu diễn tập đóng phản xạ bắc cầu Ràng buộc cho biết tập đối tượng hệ thống file tập đối tượng truy nhập từ thư mục gốc Root cách duyệt theo quan hệ contents Bản thân Root khơng chứa trực tiếp hay gián tiếp Để kiểm tra thuộc tính hệ thống cần xây dựng khai báo assert dùng lệnh check để yêu cầu Alloy kiểm tra phản ví dụ cho mệnh đề khẳng định Khai báo fact bắt buộc mệnh đề phải assert cho số thứ phải hành vi mơ hình Sẽ khơng có thư mục chứa nghĩa quan hệ thư mục khơng quay vịng Như quan hệ thể tập đóng bắc cầu khai báo thơng qua tốn tử ^ // Đường dẫn hệ thống file khơng tuần hồn assert acyclic { no d: Dir | d in d.^contents } Để kiểm tra mơ hình với tối đa đối tượng FSObject sử dụng câu lệnh check acyclic for Khi kiểm tra, Alloy xem xét trường hợp mà mức cao đối tượng có tối đa Có thể có hai kết quả:  “no solution found” nghĩa khơng có phản ví dụ câu khẳng định mơ hình với phạm vi kiểm tra thời  “solution found” nghĩa có phản ví dụ Ví dụ biểu diễn dạng đồ họa Người dùng kiểm tra có thư mục gốc với đối tượng file có chỗ hệ thống file // hệ thống file có thư mục gốc assert oneRoot { one d: Dir | no d.parent } // Mối đối tượng có chỗ assert oneLocation { all o: FSObject | lone d: Dir | o in d.contents } Từ khóa one lone giúp định lượng phần tử one có nghĩa cịn lone có nghĩa 87 Giống ngôn ngữ mô tả hành động, Alloy cho phép mô tả thao tác/hành vi hệ thống Thao tác move di chuyển đối tượng file hay thư mục từ chỗ sang chỗ khác cập nhật lại cấu trúc hệ thống file Alloy sử dụng tất tham số làm tham số hàm kể đầu Kết hàm đầu hàm hợp lệ sai ngược lại pred move [fs, fs': FileSystem, x: FSObject, d: Dir] { (x + d) in fs.objects fs'.parent = fs.parent - x->(x.(fs.parent)) + x->d } Mệnh đề move hệ thống file fs’ kết việc chuyển đối tượng x tới thư mục d hệ thống file fs Cũng coi fs trạng thái ban đầu fs’ trạng thái sau thực thao tác Hình 5-4 Phản chứng cho thấy lỗi với thư mục tuần hồn Ví dụ trình bày cách thức lập mơ hình kỹ thuật xây dựng yêu cầu để đảm bảo hệ thống file hoạt động mong muốn người thiết kế (sử dụng Alloy 4.2) Ở mức cao, cách thức xây dựng mơ hình gần với cách thức phân tích thiết kế hướng đối tượng sử dụng phổ biến công nghệ phần mềm Phần mô tả ràng buộc hay thuộc tính mà mơ hình cần phải thỏa mãn hay đảm bảo gần với ngơn ngữ lơ-gíc bậc Tuy nhiên, cốt lõi biểu diễn phép biểu diễn tập hợp Sau xây dựng xong, Alloy cho phép người thiết kế kiểm tra lại mơ hình có đảm bảo thuộc tính (yêu cầu) đề hay không 5.3 Các phương pháp phân rã liệu chương trình Một mặt mong muốn đặc tả khái qt gần với mơ hình an toàn lựa chọn Như vậy, phải đối mặt với khó khăn diễn giải chứng minh chi tiết cách thuyết phục đoạn mã sinh phù hợp với đặc tả Ở mức độ chi tiết hơn, đặc tả gần với thao tác thấy giao tiếp hệ thống Đặc tả phức tạp khó hiểu việc chứng minh tương ứng mơ hình triển khai không 88 thực tế Mặt khác, đặc tả biểu diễn thủ tục/hàm bên hệ thống giao tiếp thấy Khi việc chứng minh mơ hình cịn khó khăn Hình 5-5 cho thấy cách tiếp cận khác với mức độ chi tiết đặc tả Như vậy, công việc đặc tả cung cấp thông tin hai mức:  Mức trừu tượng gần giống với việc lập mơ hình  Mức chi tiết mô tả thao tác hay hoạt động hệ thống mơ tả giao tiếp Hình 5-5 Các mức độ chi tiết việc đặc tả mơ hình việc triển khai Chứng minh việc triển khai phù hợp mơ hình đề vơ khó khăn nhiên việc chứng minh mã chương trình phù hợp với đặc tả đủ sát chấp nhận việc chứng minh phần Phần giới thiệu hai kỹ thuật sử dụng cho việc xây dựng đặc tả tắc bao gồm phân rã cấu trúc liệu thuật toán 5.3.1 Phân rã cấu trúc liệu Kỹ thuật phân rã liệu (data structure refinement) sử dụng nhiều mức trừu tượng với mức độ chi tiết khác Mỗi lớp đặc tả máy trạng thái mô tả hồn chỉnh hệ thống Vai trị lớp sau:  Lớp trừu tượng kết hợp nhiều kiểu liệu, biến hàm vào vài hàm đơn giản  Các lớp bổ sung chi tiết phân rã hàm khái quát thành đối tượng hàm cụ thể Các lớp sau mô tả cụ thể hệ thống thảo mãn thuộc tính an tồn giống lớp  Sau hồn thành lớp sau lớp đặc tả trước hết vai trò Lớp gần với biến hàm đoạn mã hệ thống Như vậy, lớp đảm 89 bảo mô tả chi tiết xác giao tiếp hệ thống giúp cho người thiết kế triển khai Kỹ thuật không cho biết cách thức thiết kế hệ thống bên Việc kiểm chứng cần sử dụng kỹ thuật công nghệ phần mềm truyền thống kiểm tra mã nguồn kiểm thử 5.3.2 Phân rã thuật toán Kỹ thuật phân rã thuật toán (Algorithm refinement) cho phép mô tả phần cấu trúc nội hệ thống Kỹ thuật coi hệ thống chuỗi máy trạng thái có phân lớp  Mỗi máy trạng thái sử dụng chức lớp cung cấp  Việc triển khai chức (function) bao gồm chương trình khái quát sử dụng chức có máy trạng thái bên  Lớp thấp cung cấp chức nguyên thủy hệ thống mà phân rã thêm Hình 5-6 minh họa cho bước khái quát nêu Mỗi bước ứng với lớp người thiết kế mô tả máy trạng thái giống kỹ thuật phân rã liệu, thêm vào đó, bổ sung chương trình khái qt cho chức máy trạng thái Phần bổ sung mơ tả thuật tốn chức (hàm) theo dạng lời gọi hàm Hình 5-6 Phân rã thuật toán theo lớp 90 Việc chứng minh đặc tả sử dụng kỹ thuật trước hết cần chứng minh đặc tả mức cao tương ứng với mơ hình xây dựng Tiếp theo, tương tự chứng minh chương trình khái quát lớp cao phù hợp với đặc tả biết đặc tả chức lớp Nhược điểm kỹ thuật việc khó thực chứng minh thuật toán khái quát Một số tốn chứng minh thuộc lớp tốn khó (intractable) Vấn đề khác đặc tả mức cao phức tạp biểu diễn giao tiếp thực hệ thống Như việc chứng minh mơ hình mà hệ thống áp dụng với việc triển khai thực tế khó khăn Tuy vậy, việc không hạn chế người dùng kết hợp hai kỹ thuật phân rã liệu thuật toán để đạt yêu cầu đảm bảo tính phù hợp mơ hình lựa chọn việc triển khai thực Ví dụ Hình 5-7 cho thấy cách áp dụng kỹ thuật phân rã thuật toán vào việc mô tả hệ thống file Ở mức cao (mức 2) người dùng quan tâm tới file thư mục (directories) Các chức tạo, xóa file thư mục chức giám sát truy nhập Mức (mức 1) mô tả thao tác với file mô tả file Nói cách khác mức đề cập tới cách thức xử lý cấu trúc lưu trữ file thiết bị lưu trữ làm việc với thẻ file, đơn vị cấp phát file Các chức mức không bị lệ thuộc vào thiết bị lưu trữ vật lý cụ thể Ở mức thấp (mức 0), cách thức làm việc (chức năng) với thiết bị lưu trữ vật lý cụ thể mô tả Khi này, chức thao tác lên liệu khối cụ thể thiết bị lưu trữ Hình 5-7 Phân rã thuật toán cho thao tác hệ thống file 5.4 Các kỹ thuật kiểm chứng mã chương trình Tất dự án phần mềm hướng tới kết cuối đoạn mã Ở mức đoạn mã, mục tiêu trọng tâm hạn chế giảm thiểu lỗi việc triển khai, lỗi hay lỗ hổng phổ biến phát nhờ công cụ quét mã nguồn Các lỗi triển khai vừa nhiều vừa phổ biến gồm lỗi tiếng tràn đệm (bufer-overflow) Việc xác định lỗi đoạn mã phần mềm cho phép xác định mức độ an toàn phần mềm với lỗi khả đáp ứng phần mềm với yêu cầu an toàn với đoạn mã trình xây dựng (viết mã) 91 Quá trình đánh giá mã nguồn thủ cơng hay tự động nhằm mục đích xác định lỗi liên quan đến an toàn trước phần mềm xuất xưởng Tất nhiên, khơng có phương thuốc trị bách bệnh Việc đánh giá mã nguồn cần thiết chưa đủ để đạt phần mềm an ninh yếu tố sau:  Các lỗi an ninh vấn đề hiển (cần phải xử lý) song lỗ hổng thiết kế vấn đề nghiêm trọng Các lỗi thiết kế phát thông qua việc đánh giá mã nguồn Cách tiếp cận đầy đủ để đạt phần mềm an tồn kết hợp hài hịa đánh giá mã nguồn áp dụng quy trình phân tích thiết kế an toàn  Việc đánh giá mã nguồn hiển nhiên cần tri thức lập trình Việc hiểu biết chế an toàn hay an toàn mạng khơng có ích nhiều với việc đánh giá mã nguồn Nói cách khác, việc đánh giá mã nguồn tốt người viết chúng khơng phải chun gia an tồn Phần trình bày hai kỹ thuật phân tích chủ yếu phân tích tĩnh phân tích động Phân tích tĩnh khơng cần thực thi chương trình hay đoạn mã cần đánh giá, ngược lại phân tích động thực thi chương trình để đánh giá hành vi chương trình 5.4.1 Phân tích tĩnh Phân tích tĩnh đề cập đến kỹ thuật đánh giá mã nguồn nhằm cảnh báo lỗ hổng an toàn tiềm tàng mà không thực thi chúng  Một cách lý tưởng cơng cụ tự động tìm kiếm lỗi an ninh với mức độ đảm bảo định lỗi song việc vượt khả nhiều công cụ thời  Các kỹ thuật kiểm tra phần mềm (testing) thông thường nhằm kiểm tra hành vi (chức năng) với người dùng thông thường điều kiện thông thường nên khó để phát lỗi liên quan đến vấn đề an ninh an tồn Hình 5-8 Mơ hình phân tích tĩnh đoạn mã 92 Việc cơng cụ phân tích tĩnh cần làm chuyển mã chương trình thành mơ hình chương trình (program model) Hình 5-8 Mơ hình chương trình thực chất cấu trúc liệu biểu diễn đoạn mã cần phân tích Việc phân tích tiến hành kết hợp với tri thức vấn đề an toàn biết trước dựa kinh nghiệm Bước cuối biểu diễn kết phân tích theo u cầu an tồn đề Dạng cách cảnh báo, cơng cụ cao cấp cung cấp phản ví dụ (khi áp dụng cơng cụ dựa lơ-gíc hay kiểm chứng mơ hình) Các kỹ thuật xây dựng mơ hình phân tích bao gồm:  Phân tích từ vựng (lexical analysis)  Phân tích câu (parsing)  Cú pháp khái quát (astract syntax)  Phân tích ngữ nghĩa (semantic analysis)  Phân tích luồng điều khiển (control flow)  Phân tích luồng liệu (data flow)  Phân tích lan truyền lỗi (Taint propagation) a Phân tích từ vựng Chuyển đoạn mã thành chuỗi thẻ (token) nhằm loại bỏ thành phần không quan trọng đoạn mã chương trình Các thẻ chứa định danh (biến, tên hàm, ) vị trí chúng đoạn mã Đoạn mã minh họa cho việc chuyển đổi dòng lệnh thẻ b Phân tích câu Bộ phân tích câu sử dụng ngữ pháp phi ngữ cảnh (Context-free Grammar-CFG) để đối sánh chuỗi từ hay thẻ Bộ ngữ pháp sử dụng luật sinh để diễn tả ký hiệu ngôn ngữ (lập trình) Hình 5-9 Bộ luật sinh phân tích Bộ phân tích câu thực việc suy diễn cách đối sánh chuỗi ký hiệu (thẻ) với luật sinh để tạo phân tích Hiện phân tích câu cho ngơn ngữ C, C++, hay Java cung cấp dạng mã nguồn mở hay cách dịch vụ cho phép người phát triển tùy biến theo yêu cầu 93 Hình 5-10 Cây cú pháp câu lệnh c Cú pháp khái qt Việc phân tích phức tạp khơng phù hợp phân tích mục tiêu phân tích nhằm vào việc tách từ Vì cú pháp khái quát cung cấp cấu trúc liệu phù hợp với việc phân tích cách loại bỏ ký hiệu (thẻ) không phù hợp Các ký hiệu cú pháp khái quát so với ngơn ngữ lập trình ban đầu Hình 5-11 Cây cú pháp khái quát d Phân tích ngữ nghĩa Việc phân tích ngữ nghĩa bắt đầu việc phân rã ký hiệu (tên biến hay hàm) kiểm tra kiểu liệu Việc phân tích cho phép lập cấu trúc đoạn mã thông qua việc kiểm tra lớp đối tượng sử dụng, đặc biệt hữu ích với lập trình hướng đối tượng Chức phân tích ngữ nghĩa sử dụng nhiều biên dịch (compiler) môi trường phát triển IDE (Integrated Development 94 Environment) cho phép kiểm tra kiểu liệu, phân rã tên (định danh) chương trình mơ tả hằng, biến hàm e Phân tích luồng điều khiển Mục tiêu kỹ thuật để theo dõi tình thực thi khác đoạn mã thường thực cách xây dựng đồ thị luồng điều khiển ví dụ Việc xây dựng luồng điều khiển giống việc xây dựng lưu đồ chương trình từ đoạn mã, trái ngược với trình phát triển phần mềm thông thường (bắt đầu từ xây dựng lưu đồ viết đoạn mã) Việc tái tạo lại luồng điều khiển cho người phân tích hình dung khối đoạn mã cách thức vận hành khối Hình 5-12 Luồng điều khiển Đồ thị gọi hàm biểu diễn luồng điều khiển hàm hay phương thức xây dựng dựa đồ thị có hướng Về bản, đồ thị thể trạng thái hoạt động chương trình thơng qua việc hàm kích hoạt (gọi) Kỹ thuật thường kết hợp với việc phân tích luồng liệu Hình 5-13 Đồ thị gọi hàm ba phương thức larry, moe, curly f Phân tích luồng liệu Kỹ thuật cho phép kiểm chứng cách liệu di chuyển đoạn mã Việc phân tích thường kết hợp với luồng điều khiển để xác định vị trí bắt đầu kết thúc liệu Việc phân tích luồng phát tình sử dụng mật hay khóa cố định (hard-coded) đoạn mã 95 g Phân tích lan truyền lỗi Kỹ thuật sử dụng để tìm hiểu giá trị bên đoạn mã mà người cơng có khả kiểm sốt cách sử dụng luồng liệu Việc cần thông tin việc biến chứa lỗi xuất đâu chương trình cách thức di chuyển chương trình Mục đích việc phân tích để hiểu cách thức trỏ tham chiếu đến vị trí nhớ Việc phân tích quan trọng với việc phân tích lan truyền lỗi Việc phân tích tĩnh sử dụng cách rộng rãi người biết Điều phần có nhiều kiểu cơng cụ phân tích tĩnh hướng tới mục tiêu khác Hình liệt kê số cơng cụ phân tích tĩnh hướng tới mục tiêu khác Địa Loại công cụ Kiểm tra kiểu lập trình PMD http://pmd.sourceforge.net Parasoft http://www.parasoft.com Kiểm chứng chương trình Praxis High Integrity Systems http://www.praxis-his.com Escher Technologies http://www.eschertech.com Kiểm tra thuộc tính Polyspace http://www.polyspace.com Grammatech http://www.gramatech.com Tìm lỗi FindBugs http://www.findbugs.org Visual Studio 2005 \analyze http://msdn.microsoft.com/vstudio/ Đánh giá an ninh Fortify Software http://www.fortify.com Ounce Labs http://www.ouncelabs.com Hình 5-14 Các cơng cụ phân tích tĩnh Một dạng ứng dụng phân tích tĩnh nhiều người biết tới kiểm tra kiểu liệu sử dụng chương trình Các trình soạn thảo cảnh báo cho người lập trình tình khơng tương hợp kiểu Điều dẫn đến việc mát liệu chí gây an tồn cho chương trình trường hợp kiểm tra độ dài chuỗi Một dạng khác kiểm tra kiểu lập trình (style checking) mà cụ thể yêu cầu người lập trình tuân thủ đầy đủ qui ước viết mã, đặt tên sử dụng cấu trúc điều khiển Kiểm tra thuộc tính kiểm chứng chương trình ứng dụng phức tạp việc phân tích tĩnh Mục tiêu kiểm chứng đoạn mã xây dựng có phù hợp với đặc tả chương trình hay qui định ràng buộc đề (hay thuộc tính an tồn) với đoạn mã 96 Nếu đặc tả chương trình bao trùm tồn chức chương trình, cơng cụ kiểm chứng thực việc kiểm chứng tương đương để chắn đoạn mã chương trình tương ứng xác với Thơng thường, đặc tả (chính tắc) áp dụng cho số chức thiết yếu chương trình (hệ thống) nên áp dụng việc kiểm chứng phần Đơi cịn gọi kiểm tra thuộc tính Đây điều kiện mà chương trình phải tuân theo Các cơng cụ phức tạp cho phép phân tích mặt thời gian hay cung cấp ví dụ phản chứng giúp cho người lập trình hình dung tốt vi phạm với yêu cầu đề Tìm lỗi ứng dụng quan trọng phân tích tĩnh Mục tiêu tình mà chương trình hoạt động khơng người lập trình dự định Cơng cụ tìm lỗi lý tưởng chứng minh đủ cần cung cấp phản ví dụ Điều cho biết tình xảy lỗi Đánh giá an ninh mục tiêu thu hút nhiều người ý tới cơng cụ phân tích tĩnh Các cơng cụ thời kỳ đầu tập trung vào việc quét hàm hay bị lạm dụng strcpy cần tiến hành việc đánh giá an ninh thủ công Điều cho người dùng coi lỗi phát lỗi lập trình vấn đề an ninh cần ý Các công cụ thường kết hợp việc tìm lỗi kiểm tra thuộc tính Việc kiểm tra tràn đệm diễn giải yêu cầu lập trình cho chương trình khơng truy nhập ngồi khơng gian nhớ cấp phát Thách thức lớn cho việc phân tích tĩnh lựa chọn cách thức biểu diễn chương trình phù hợp mà cho phép cân đối mức độ xác, khả mở rộng kỹ thuật phân tích nhằm phát vấn đề cần quan tâm Bài tốn cho phân tích tĩnh thường sử dụng kỹ thuật áp dụng trình dịch bao gồm việc phân tích luồng điều khiển liệu Các cơng cụ phân tích tĩnh tốt thường sử dụng kiểu luật Điều cho phép công cụ phân tích lập mơ hình mơi trường hoạt động kết lời gọi hệ thống thư viện lập trình Luật cho phép định nghĩa thuộc tính an tồn cách thuận tiện cơng cụ kiểm chứng Như cơng cụ phân tích tĩnh tốt cần dễ sử dụng với người khơng có chun mơn vấn đề an toàn Điều nghĩa kết phân tích cần dễ hiểu với người lập trình thơng thường, khơng hiểu biết sâu an tồn, hướng dẫn người dùng thói quen lập trình an toàn Đặc điểm quan trọng khác dạng tri thức (tập luật) công cụ hỗ trợ Tập luật tốt trợ giúp người dùng đắc lực trình phân tích đoạn mã Cuối cơng cụ tốt cho phép phát triệt để lỗi an toàn phổ biến 5.4.2 Phân tích động Q trình phân tích tĩnh đánh giá chương trình giống trình biên dịch đọc chương trình Cách phân tích khác kiểm tra chương trình cách giống mơi trường hoạt động sử dụng chương trình cách xem xét mã thực thi hay bytecode (với ngôn ngữ Java) Quá trình phân tích động phần mềm thực cách chạy 97 đoạn mã xử lý vật lý hay ảo Các đoạn mã ngày sử dụng thư viện liên kết động hay theo u cầu, việc phân tích tĩnh khơng thể đầy đủ khía cạnh đoạn mã Tuy nhiện, việc phân tích động nên thực sau hồn thành việc phân tích tĩnh việc thực thi đoạn mã làm tổn hại đến hệ thống Trên thực tế, để phân tích đánh giá tính an tồn hệ thống, cần thực thêm:  Quét lỗ hổng  Kiểm thử xâm nhập Việc phân tích động thực thơng qua phần mềm sửa lỗi debugger Sửa lỗi hoạt động mức cao, mức mã nguồn hay mức thấp mã máy Công cụ sửa lỗi cung cấp chế bẫy chạy bước, chạy qua hay lấy thơng tin chương trình thời điểm chạy cho phép người dùng kiểm tra hệ phận chương trình phân tích Việc phân tích mã chương trình sau biên dịch có ưu điểm:  Người dùng khơng phải dự đốn xem trình biên dịch diễn giải câu lệnh câu lệnh chương trình dịch, Như vậy, việc loại trừ tính mơ hồ  Mã nguồn chương trình khơng phải lúc có mã thực thi hay mã bytecode lại có sẵn Tuy nhiên việc phân tích động có nhược điểm:  Hiểu đoạn mã biên dịch khó khăn số dạng mã máy khó dịch ngược tập lệnh có độ rộng lệnh thay đổi Intel x86 Điều ý nghĩa đoạn mã thay đổi thay đổi vị trí dịch ngược chuỗi byte biểu diễn mã lệnh  Việc sử dụng mã biên dịch khiến cho việc hiểu ngữ nghĩa (ý định ban đầu người lập trình) khó khăn nhiều Đặc biệt trình biên dịch thực việc tối ưu hóa đoạn mã thực thi dẫn đễn đoạn mã khác so với mã nguồn Trong tương lai việc phân tích động tập trung vào nghiên cứu:  Khai thác hiệu thông tin chạy chương trình (run-time) để tối ưu hóa chương trình  Trợ giúp người lập trình hiểu, sửa chữa nâng cấp phần mềm đặc biệt khía cạnh an tồn  Cải thiện cách thức thu thập thơng tin chạy q trình phân tích động cách kết hợp phần cứng phần mềm nhằm giảm chi phí Với số phần mềm độc hại có khả chống lại việc thu thập thông tin dạng debug thơng thường chế giải pháp kết hợp có giá trị lớn việc phân tích hành vi phần mềm 98 5.5 Kết luận Từ khía cạnh thiết kế, việc đánh giá an toàn cho biết khả mức độ đáp ứng phần mềm với yêu cầu an toàn toàn đề Các kỹ thuật kiểm chứng giúp phát xác định thiếu sót q trình phát triển triển khai phần mềm so với yêu cầu an toàn, hạn chế việc tồn điểm yếu hay lỗ hổng mà bị khai thác cách vơ tình hay có chủ đích Việc đánh giá an toàn cần thực với đoạn mã khơng có thơng tin đặc tả đoạn mã cách áp dụng kỹ thuật phân tích tĩnh động Việc khơng có tác dụng kiểm chứng tính an tồn đoạn mã mà cịn có tác dụng nâng cao chất lượng phần mềm cải thiện thói quen lập trình an tồn Việc đảm bảo an tồn hệ thống (system assurance) hướng đến kiểm chứng hệ thống tuân thủ mục tiêu an toàn mong muốn Các kỹ thuật cơng cụ trình bày phần trước chương hỗ trợ cho việc đảm bảo đánh giá an tồn hệ thống Cách thức mơ tả yêu cầu an toàn đặc tả hệ thống giúp cho việc kiểm chứng giới thiệu Qua giúp đánh giá mức độ đáp ứng yêu cầu an toàn hệ thống Trên thực tế, tổ chức quốc gia quốc tế nỗ lực phát triển tiêu chuẩn cho mơ tả u cầu an tồn/an ninh cách thức đánh giá để kiểm chứng việc triển khai yêu cầu Các tiêu chuẩn bao phủ từ chức xác thực mật giám truy nhập cấu hình hệ thống Các tiêu chuẩn tiêu biểu liên quan đến an toàn hệ điều hành kể đến Tiêu chuẩn đánh giá hệ thống máy tính tin cậy TCSEC (Trusted Computer System Evaluation Criteria) hay Các tiêu chuẩn phổ quát (Common Criteria) Việc áp dụng tiêu chuẩn giúp cho người dùng người thiết kế nắm mức độ an toàn hệ thống dự định sử dụng hay triển khai 5.6 Câu hỏi ôn tập 1) 2) 3) 4) 5) 6) 7) 8) Trình bày đặc trưng đặc tả an tồn? Trình bày khái niệm máy chứng minh (theorem prover)? Trình bày khái niệm kiểm chứng mơ hình (model checking)? Trình bày khái niệm phân rã cấu trúc liệu? Trình bày khái niệm phân rã chương trình? Trình bày cần thiết áp dụng kiểm chứng mã chương trình? Khái niệm phân tích tĩnh? Khái niệm phân tích động? 99 Tài liệu tham khảo [1] [2] Andrew S Tanenbaum, Herbert Bos, Modern Operating Systems 4th Edition, Pearson Education, Inc 2015 Abraham Silberschatz, Peter B Galvin, Greg Gagne, Operating System Concepts Essentials, John Wiley & Sons Inc., 2014 Daniel Jackson, “Alloy: a lightweight object modelling notation,” ACM Transactionson Software Engineering and Methodology (TOSEM), vol 11, no 2, pp 256–290, 2002 [4] Gustavo Duarte, CPU Rings, Privilege, and Protection, 2008 [5] Intel Co., Intel x64 and IA-32 Architectures Software Developer’s Manual, Intel Co 2016 [6] Morrie Gasser, Building a secure computer system, Library of congress, ISBN 0-442-23022-2 [7] Mehedi Al Mamun, Operating Systems Security: Linux, LAP Lambert Acad Publishing, 2011 [8] Seymour Bosworth M.E Kabay, Eric Whyne, Computer Security Handbook 6th Edition, John Wiley & Sons, 2014 [9] Trent Jaeger, Operating System Security, Morgan & Claypool Publishers, 2008 [10] Will Arthur & David Challener, A Practical Guide to TPM 2.0: Using the New Trusted Platform Module in the New Age of Security, © 2015 by Apress Media [3] 100 ... hành Như an toàn hệ điều hành lệ thuộc vào mức độ an toàn phần mềm chức Phần mở đầu chương giới thiệu tóm tắt đặc trưng đặc tả an toàn việc xây dựng phần mềm hay hệ thống nói chung Phần trình bày... 2) 3) 4) 5) 6) 7) 79 CHƯƠNG ĐÁNH GIÁ AN TOÀN Vấn đề đánh giá an tồn có liên quan chặt chẽ đến việc đảm bảo chất lượng phần mềm theo nghĩa phần mềm xây dựng xong phải thỏa mãn đặc tả an toàn phần. .. an tồn Thành cơng việc đạt mức độ an toàn cao hệ thống tùy thuộc vào mức độ cẩn thận trình thiết kế triển khai biện pháp kiểm soát an ninh Mục tiêu mơ hình an ninh biểu diễn yêu cầu an toàn hệ

Ngày đăng: 01/03/2022, 09:31

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan