Quá trình phân tích tĩnh đánh giá chương trình giống như trình biên dịch đọc chương trình này. Cách phân tích khác kiểm tra chương trình bằng cách giống như môi trường hoạt động sử dụng các chương trình này bằng cách xem xét mã thực thi hay bytecode
98 các đoạn mã trên bộ xử lý vật lý hay ảo. Các đoạn mã hiện nay ngày càng sử dụng thư viện liên kết động hay theo yêu cầu, việc phân tích tĩnh không thể hiện đầy đủ các khía cạnh của đoạn mã. Tuy nhiện, việc phân tích động nên được thực hiện sau khi hoàn thành việc phân tích tĩnh do việc thực thi các đoạn mã có thể làm tổn hại đến hệ thống.
Trên thực tế, để phân tích và đánh giá tính an toàn của hệ thống, có thể cần thực hiện thêm:
Quét lỗ hổng
Kiểm thử xâm nhập
Việc phân tích động có thể được thực hiện thông qua phần mềm sửa lỗi debugger. Sửa lỗi có thể hoạt động ở mức cao, mức mã nguồn hay mức thấp hơn như mã máy. Công cụ sửa lỗi cung cấp các cơ chế bẫy như chạy từng bước, chạy qua hay lấy thông tin về chương trình tại thời điểm chạy cho phép người dùng kiểm tra hệ quả của từng bộ phận trong chương trình được phân tích.
Việc phân tích mã chương trình sau khi biên dịch có ưu điểm:
Người dùng không phải dự đoán xem trình biên dịch sẽ diễn giải các câu lệnh như thế nào do các câu lệnh của chương trình đã được dịch, Như vậy, việc này loại trừ tính mơ hồ.
Mã nguồn chương trình không phải lúc nào cũng có được trong khi mã thực thi hay mã bytecode thì lại có sẵn.
Tuy nhiên việc phân tích động cũng có nhược điểm:
Hiểu được các đoạn mã đã được biên dịch có thể rất khó khăn và một số dạng mã máy rất khó dịch ngược như tập lệnh có độ rộng lệnh thay đổi như Intel x86. Điều này là vì ý nghĩa của đoạn mã thay đổi khi thay đổi vị trí dịch ngược của 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 được ngữ nghĩa (ý định ban đầu của người lập trình) khó khăn hơn nhiều. Đặc biệt khi trình biên dịch thực hiện việc tối ưu hóa đoạn mã thực thi dẫn đễn đoạn mã rất khác so với mã nguồn.
Trong tương lai việc phân tích động tập trung vào các nghiên cứu:
Khai thác hiệu quả 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 và nâng cấp phần mềm đặc biệt về khía cạnh an toàn.
Cải thiện cách thức thu thập thông tin chạy trong quá trình phân tích động bằng cách kết hợp phần cứng và phần mềm nhằm giảm chi phí. Với một số phần mềm độc hại có khả năng chống lại việc thu thập thông tin dạng debug thông thường thì cơ chế giải pháp kết hợp có giá trị rất lớn trong việc phân tích hành vi của phần mềm.
99
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ả năng và mức độ đáp ứng của phần mềm với các yêu cầu về an toàn toàn đề ra. Các kỹ thuật kiểm chứng giúp phát hiện và xác định các thiếu sót trong quá trình phát triển và triển khai của phần mềm so với các yêu cầu về an toàn, như vậy hạn chế việc tồn tại các điểm yếu hay lỗ hổng mà có thể bị khai thác một cách vô tình hay có chủ đích.
Việc đánh giá an toàn cũng cần được thực hiện với các đoạn mã ngay cả khi không có các thông tin đặc tả về đoạn mã đó bằng cách áp dụng các kỹ thuật phân tích tĩnh và động. Việc này không chỉ có tác dụng kiểm chứng tính an toàn của đoạn mã mà còn có tác dụng nâng cao chất lượng của phần mềm và cải thiện thói quen lập trình an toàn.
Việc đảm bảo an toàn hệ thống (system assurance) hướng đến kiểm chứng hệ thống tuân thủ các mục tiêu an toàn mong muốn. Các kỹ thuật và công cụ trình bày trong các phần trước của chương hỗ trợ cho việc đảm bảo và đánh giá an toàn hệ thống. Cách thức mô tả các yêu cầu về an toàn và các đặc tả hệ thống giúp cho việc kiểm chứng cũng đã được giới thiệu. Qua đó giúp đánh giá mức độ đáp ứng các yêu cầu về an toàn của hệ thống.
Trên thực tế, các tổ chức quốc gia và quốc tế nỗ lực phát triển các tiêu chuẩn cho các mô tả yêu cầu an toàn/an ninh và cách thức đánh giá để kiểm chứng việc triển khai các yêu cầu này. Các tiêu chuẩn này bao phủ từ các chức năng xác thực mật khẩu cho đến giám truy nhập và cấu hình hệ thống. Các bộ tiêu chuẩn tiêu biểu liên quan đến an toàn hệ điều hành có thể kể đến là 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 các bộ tiêu chuẩn giúp cho cả người dùng và người thiết kế nắm được mức độ an toàn của hệ thống dự định sử dụng hay triển khai.