OS往往无法提供理想的安全服务和安全保障。这主要存在两方面的原因,首先在OS实现过程中OS开发者不可避免地存在编程错误、实现与设计不一致等问题,另外更重要的是在OS设计过程存在OS功能设计与安全目标不一致等问题。
目前,公认的、最为合理的方案是利用严格的形式化方法来对OS进行设计实现和验证。形式化方法是指使用基于数学逻辑和各种推理验证的技术来描述、开发以及验证软件和硬件系统的方法。利用形式化方法对OS进行设计和验证包括利用严格的数学形式方法描述OS的操作行为和语义,建立OS语义模型,并验证其代码实现了设计预定的功能需求。这种方法称为形式化验证(formal verification)形式化验证包括模型检测(Model Checking) 和定理证明(TheoremProving)两种方式。模型检测方式主要是利用对系统问题建立的
数学模型进行自动推理;定理证明一般采用交互式的定理辅助证明器来对系统问题进行抽象描述,并以数学公式定理的方式表达系统的功能和安全性,采用数学定理推导演算的方法进行验证。值得一提的是,就目前而言,定理证明方式可以验证的问题数量显然比模型检测来的多。对于OS形式化设计与验证,由于存在状态空间膨胀等问题,模型检测的方法并不适用于OS形式化设计与验证。
采用形式化方法对OS进行设计和验证,涉及到对OS进行建立模型,将非形式化的概念转化为模型中形式化的部分,然后在此基础上进行设计和验证。在此过程中,即使使用形式化的方法,在设计和验证中也难免会引入人为的错误,特别是在对大型系统的验证过程中。
形式化模型只能无限地接近被描述的真实系统,而无法完全精确地表达真实系统,而且模型越是精确,建模耗费的时间和空间就越是多,后续的验证过程越是困难。我们对现实世界的模拟,重要的是根据不同的任务将相关的内容进行建模,而摒弃不相关的内容,从而达到抽象的目的,即需要明确抽象的精确程度。抽象层次从高到低,涉及高层语言层(如C语言)、汇编语言层以及机器语言层。
最后欢迎大家访问我的个人网站: 1024s