Tài liệu: Một số mô hình bảo mật xử lí virus

Tài liệu
Khoa CNTT ĐHSP KT Hưng Yên

Tóm tắt nội dung

-
Một số mô hình bảo mật xử lí virus

Nội dung

.

Khái niệm mã ngoại lai

Trong các môi trường trao đổi thông tin số, điển hình là Internet, các đoạn mã máy tính, gọi tắt là mã (code) được di cư từ máy này sang máy khác. Những đoạn mã di cư này được biết đến với tên gọi là mobile code, khi được xem xét để thực thi trên máy trạm chúng được coi là các mã ngoại lai (foreign code). Trong tài liệu này chúng ta thống nhất định nghĩa: Mã ngoại lai là bất kỳ mã nào không phải sinh ra tại máy trạm nhưng bằng cách này hay cách khác tới được máy trạm và chạy trên đó. Các loại Applets, ActiveX, các file đính kèm với thư điện tử, TclScript, JavaScript, PostScript, Word macros, và Excel macros là các ví dụ cho foreign code.

Khi nói về hệ thống kiểm chứng phân tán, Phillip [19] đã đề cập đến khái niệm về nơi tiêu dùng mã (code consumer) và nơi cung cấp mã (code producer). Trong giáo trình này chúng ta sẽ thống nhất dùng khái niệm code consumer như một môi trường cho phép chạy foreign code và nơi cung cấp mã là nơi foreign code được xuất bản. Ví dụ, trong kiến trúc web: Web server được xem xét như code producer. Web browser được xem như code consumer, và applet là foreign code.

Các vấn đề về bảo mật khi thực thi mã ngoại lai

Bản chất tự nhiên của foreign code là di trú, foreign code thường đến từ phía bên ngoài hệ thống máy trạm, đi qua nhiều môi trường tính toán khác nhau và thường là từ các môi trường không an toàn chẳng hạn như Internet. Chúng di cư đến máy trạm và thực thi tương tự như một chương trình máy tính thông thường. Việc người dùng không biết được xuất xứ, tác giả và hành vi của foreign code đã tiềm ẩn nhiều nguy cơ đối với hệ thống máy tính một khi chấp nhận chạy forein code. Dễ dàng hình dung virus máy tính là một loại foreign code độc hại. Xử lý foreign code cũng chính là xử lý virus máy tính.

Để bảo vệ một hệ thống máy tính, trước hết chúng ta cần phải kiểm soát việc truy xuất tới hệ thống. Sau đó là kiểm soát truy xuất bên trong hệ thống với các luật bảo mật [1]. Giải pháp là có cách nào đó giới hạn các truy xuất của foreign code tới các dữ liệu và tài nguyên của hệ thống. Điều chúng ta muốn làm thực sự có liên quan đến kiểm soát truy xuất. Chúng ta biết rằng mọi tiến trình muốn thực thi phải nhận được một môi trường nhất định. Ví dụ để thực thi, một tiến trình cần truy xuất bộ nhớ, truy xuất các tài nguyên của hệ thống, v.v. Đương nhiên một chương trình không bao giờ thực thi sẽ chẳng bao giờ làm hư hại đến hệ thống. Chương trình càng bị giới hạn truy xuất tới hệ thống thì hệ thống càng ít nguy cơ rủi ro. Do vậy nguyên tắc chung của chúng ta là nghiêm khắc kiểm soát việc truy xuất của các chương trình không bảo mật tới hệ thống. Để đạt được điều này chúng ta cần phát triển các luật bảo mật và thực thi các luật này để bảo vệ hệ thống. Theo đó, có rất nhiều mô hình an toàn, bảo mật được đưa ra chẳng hạn Bell-LaPadula, các mô hình khác như Biba, Clack-Wilson dành cho sự toàn vẹn của hệ thống.

Để x 917; lý foreign code, chúng ta cũng đã được biết tới nhiều mô hình. Trước hết cần giả thiết rằng môi trường thực thi các luật bảo mật là tin cậy (trusted) và tất cả các loại foreign code là không tin cậy (untrusted). Trong thực tế chúng ta xử lý foreign code theo cách đầy mâu thuẫn, một mặt chúng ta muốn thực thi chúng một cách an toàn. Vì vậy sự truy xuất của foreign code tới các dữ liệu và tài nguyên của hệ thống phải bị nghiêm khắc giới hạn. Mặt khác chúng ta lại muốn chúng có nhiều sức mạnh hơn. Do đó, sự truy xuất của foreign code cần được nới rộng. Một vành đai bảo mật tưởng tượng đã được áp đặt lên các hệ thống máy tính. Trong đó mã cục bộ sinh ra tại máy trạm (local code) được xem xét là tin cậy và foreign code được xem là không tin cậy. Trường hợp lý tưởng nhất có lẽ là foreign code được xử lý như local code. Đây có lẽ là mục đích của hầu hết các giải pháp cho foreign code. Tuy nhiên tin cậy (trust) không có nghĩa là an toàn (safe). Tiếp theo chúng ta sẽ bàn về bốn mô hình bảo mật điển hình để xử lý foreign code.

Các mô hình bảo mật xử lý foreign code

Mô hình Sandboxing

Thuật ngữ “sandboxing” được đưa ra lần đầu tiên bởi nhóm của Wahbe (được viện dẫn trong [20]) để chỉ ra sự giam giữ một tiến trình trong miền sai (fault domain) của nó với mục đích là bảo đảm an toàn của bộ nhớ. Để hiểu rõ về mô hình này trong khía cạnh thực hành, chúng ta cùng xem xét mô hình sandbox nổi tiếng được phát triển cho Java.

Java sử dụng thuật ngữ “sandboxing” theo nghĩa rộng hơn để chỉ sự giới hạn truy xuất tới bất kỳ tài nguyên nào của hệ thống mà không chỉ đơn thuần là bộ nhớ. Mô hình bảo mật của Java dựa trên mô hình truy xuất tuỳ ý DAC với nhiều mức quyền truy xuất tới vùng được bảo vệ [5].

Mô hình bảo mật của Java gồm ba thành phần: bộ kiểm duyệt (byte code verifier), tải (class loader) và bộ quản lý bảo mật (security manager). Chúng ta có thể xem chi tiết hơn trong [21]. Theo mô hình cơ sở của access control, ba thành phần này làm việc như một bộ điều khiển tham chiếu. Mô hình bảo mật của Java (JDK phiên bản 1.0) nghiêm khắc giới hạn quyền truy xuất của tất cả các applet trong một cái sandbox (hình 10.2). Tuy nhiên việc này sẽ làm hạn chế các khả năng của applet. Do vậy phiên bản JDK 1.1 đã mở rộng hơn bằng cách đưa vào khái niệm mới signed applet. Đây là một khái niệm mới sử dụng công nghệ chữ ký điện tử chúng ta sẽ xem xét kỹ hơn ở phần sau.

Trong mô hình JDK 1.1, applet được chia thành hai loại. Signed applet được xử lý như mã cục bộ và unsigned applet được đưa vào xử lý trong sandbox.

Mô hình bảo mật hiện nay của Java (JDK phiên bản 1.2) phân loại foreign code ngay tại đầu vào thành các lớp khác nhau. Cấp đặc quyền cho mỗi lớp và xử lý từng lớp theo các đặc quyền đã cấp.

Mô hình Code Signing

Mô hình này có cách tiếp cận khác với mô hình chúng ta đã xét. Để bảo đảm sự an toàn cho hệ thống, nơi tiêu dùng mã (code consumer) phải nhận được sự cam đoan rằng nguồn sản xuất foreign code là đáng tin cậy và bản thân foreign code không bị làm giả. Yêu cầu này có thể được đáp ứng bằng cách sử dụng công nghệ chữ ký điện tử

Trong trường hợp tổng quát, quá trình mã hoá mã (hay ký mã) được hoàn thiện bởi một giải thuật chữ ký công khai/bí mật chẳng hạn như RSA. Như chỉ ra trong Hình 10.5. Bất cứ khi nào các tác giả muốn xuất bản mã (foreign code), họ phải sử dụng khoá bí mật riêng để ký mã. Tuy nhiên do bất tiện của việc xử lý với những đoạn mã dài. Hơn nữa còn cần bảo đảm tính toàn vẹn của mã. Đoạn mã dài cần được chia nhỏ và mỗi đoạn chia này sau đó sẽ được băm (hash) và ký riêng rẽ. Cuối cùng mã và các đoạn chia đã ký được xuất bản.

Tại phía code consumer, một quá trình so sánh được hoàn tất để đảm bảo các giá trị hash tính toán được tại đó và giá trị hash được gửi từ code producer là giống nhau. Khi đó foreign code sẽ được phép thực thi, bằng không nó sẽ bị loại bỏ. Foreign code thoả mãn quá trình kiểm tra và được thực thi sẽ được xử lý như mã cục bộ nghĩa là không bị giới hạn truy xuất tới hệ thống.

Mô hình Firewalling

Hiện nay rất nhiều tổ chức đã và đang triển khai tường lửa (firewall) để bảo vệ mạng cục bộ trước những nguy cơ tấn công từ bên ngoài. Tường lửa có thể được triển khai dưới dạng phần mềm hoặc phần cứng. Nó nằm giữa mạng cục bộ hoặc máy trạm và phần còn lại của mạng Internet. Chức năng chính của tường lửa là điều khiển luồng dữ liệu đi vào hệ thống được bảo vệ. Nó sẽ lọc bỏ các chương trình không tin cậy và chỉ cho phép những chương trình tin cậy đi qua.

Cách tiếp cận này được biết đến như một cách kiểm tra sự an toàn của foreign code, các luật bảo mật được công thức hoá như các đặc tính dùng để phân tích [19]. Các đơn vị foreign code phải đi qua một chương trình phân tích để kiểm tra sự an toàn trước khi tới được code consumer. Chương trình phân tích này thường được gọi là bộ kiểm tra sẽ lọc ra các chương trình bị nó coi là không an toàn. Những đơn vị mã vượt qua được bộ kiểm tra này sẽ đến được máy trạm và được đối xử như mã cục bộ.

Mô hình Proof-Carrying Code

Để giải quyết vấn đề bảo mật cho foreign code. Các luật bảo mật phải được thống nhất từ trước giữa hai phía code consumer và code producer, theo đó code producer sẽ tạo ra một bằng chứng chứng minh sự an toàn của foreign code.

Trong tất cả các mô hình đã xem xét, cách tiếp cận mới này có vẻ như ít khả thi nhất vì sự mâu thuẫn xảy ra ngay trong bản thân các yêu cầu kỹ thuật. Một mặt chúng ta muốn mọi thứ thật đơn giản để không làm ảnh hưởng tới hiệu năng làm việc của hệ thống. Mặt khác chúng ta muốn bằng chứng (proof) phải bảo đảm. Sự thật là chẳng thể có bằng chứng gì đảm bảo với một công nghệ đơn giản.

Như mô tả trong hình, trước hết một thoả thuận về các luật bảo mật (safe policy) cần phải đạt được giữa code consumer và code producer. Sau đó code producer sẽ điền thêm các chú thích vào mã được biên dịch. Các luật bảo mật sẽ được áp dụng cho các mã được chú thích này để sinh ra một điều kiện kiểm chứng (verification condition) cho tính tương thích của bằng chứng. Tiếp theo, các luật bảo mật được tiếp tục sử dụng để mã hoá điều kiện kiểm chứng. Cuối cùng mã được chú thích và bằng chứng được sản sinh sẽ được gửi tới code consumer.

Một quá trình xử lý tương tự sẽ được thực hiện tại phía code consumer. Tuy nhiên thay vì sản sinh ra bằng chứng, quá trình sẽ là kiểm tra nó. Trong trường hợp bằng chứng là tương thích, mã sẽ được tích hợp vào hệ thống máy trạm.

Một số kết quả nghiên cứu khác

Đối với virus (hay chính là các đoạn foreign code có hại), theo Cohen [24,25,28], trong các môi trường không bảo mật chúng ta không thể ngăn ngừa được việc lây nhiễm. Vì không thể ngăn được việc lây nhiễm nên chúng ta chỉ có thể hy vọng phát hiện được chúng và giới hạn sự lây nhiễm xa hơn. Theo đó giải pháp hiệu quả nhất mà Cohen đưa ra hiện nay là Integrity Shell. Giải pháp này sử dụng công nghệ mã ho 5; để phát hiện ra sự thay đổi của thông tin. Nhờ đó phát hiện ra virus và ngăn ngừa các lây lan tiếp theo.

Một số xu hướng nghiên cứu mới theo quan điểm hạn chế tối đa ảnh hưởng của foreign code tới hệ thống bằng cách xây dựng các môi trường cách ly như Janus [26] và Deeds [27]. Đây là các môi trường trung gian giữa foreign code và hệ thống người dùng. Mọi yêu cầu truy xuất của foreign code tới hệ điều hành đều được điều khiển bởi các môi trường này do vậy bảo đảm sự an toàn cho hệ thống.

Bảo mật máy tính và mạng



Nguồn: voer.edu.vn/m/mot-so-mo-hinh-bao-mat-xu-li-virus/db5ddd69


Chưa có phản hồi
Bạn vui lòng Đăng nhập để bình luận