可信操作系统设计.ppt
2023/3/22,1,设计可信操作系统Designing Trusted Operating Systems,2023/3/22,2,设计可信操作系统,一、可信操作系统与安全操作系统 二、安全策略 三、安全模型 四、设计可信操作系统 五、可信操作系统的保证,2023/3/22,3,可信操作系统与安全操作系统,操作系统:在计算机系统中,操作系统是设计在硬件上的第一层软件,是对计算机系统的第一次扩充,是其他程序运行的基础。他主要提供以下功能:处理器管理 存储器管理 文件管理 设备管理 用户与计算机的接口,2023/3/22,4,可信操作系统与安全操作系统,操作系统同时也是安全的主要提供者。由于其强大功能,所以也成为被攻击的对象,一旦突破操作系统的防线,就可以肆意修改计算机的任何内容了。今天,计算机操作系统的安全显得日益重要,如何设计安全可信的操作系统,就是我们下面要讨论的问题。,2023/3/22,5,可信操作系统与安全操作系统,Secure 1、either-or 2、property of presenter 3、asserted 4、absolute 5、a goal,Trusted 1、graded 2、property of receiver 3、judged 4、relative(judged in context of use)5、a characteristic,可信操作系统不一定是安全的,但是它要求的是满足用户的安全需求,同时也满足用户的性能需求,不是一味追求安全而损害了操作系统的性能,从而在安全与性能中间达到一种平衡。,2023/3/22,6,从用户的角度来考虑,如果一个操作系统能够连续高效地保证提供内存保护、文件保护、对系统中所有对象地访问控制和用户鉴定与识别等服务,那我们就说此系统是可信地。但是对于一个开发者来说,要从操作系统地设计和操作系统所能提供安全服务的组件功能来看一个操作系统的可信度。设计一个可信的操作系统,必须考虑以下四个环节:安全策略、安全模型、设计和可信度。,用户和设计者看操作系统,2023/3/22,7,Security Policies.,一、定义:The set of laws,rules,and practices that regulate how an organization manages,protects,and distributes sensitive information.二、一些比较常见的策略,2023/3/22,8,一些比较常见的策略,Military/Government PolicyClark-Wilson:policy of constrained change.Separation of Duty:required division of responsiblity Chinese Wall:conflict of interest policy Originator Controlled Role based access control,2023/3/22,9,Military Security Policy,Military security policy:它主要用于保护机密信息。将每段信息都标有敏感级别,用户对信息访问基于need-to-know规则。我们注意以下几点:1、信息的敏感级别 2、needtoknow规则:允许使用者最小限度地访问敏感信息。3、敏感性是分层的 4、need-to-know 不分层 5、Dominance relationship,2023/3/22,10,Military Security Policy,2023/3/22,11,Military Security Policy,2023/3/22,12,Military Security Policy,上面引入了compartments这个述语,它是指相关于一个或多个项目的一些相关信息集合,往往用某个名词来表示一个compartment。它的引进是为了说明need-to-know规则的。一个compartment可以处于一个敏感级别,也可以跨越多个敏感级别。,2023/3/22,13,Military Security Policy,2023/3/22,14,Military Security Policy,再引入class或classification这个概念,它是指敏感级别和compartments构成的一个二元组:。例如:,现在来看最后一个概念:dominance 用符号 表示。s表示主体,o表示客体。看下面的关系:,2023/3/22,15,Military Security Policy,so if and only if ranksranko and Compartments compartmentso这时,我们说o支配s(或是s受o支配)。看下面的例子:这时我们可以说后面的class主导前面的class,2023/3/22,16,Military Security Policy,一个主体能够访问一个客体必须满足下面的条件:主体的授权访问机密文件级别不低于被访问客体,且 主体要知道他所需要的信息对应的所有分类隔离块,2023/3/22,17,Military Security Policy,小结:Military Security Policy主要是基于敏感信息分级和need-to-know原则。在这样的综合模型中,授权中心严格地控制着访问权,所以它可以在不同的系统设置中正常运作。授权访问和分类也是不允许个人修改的,它们都是由安全中心统一管理的。,2023/3/22,18,Chinese Wall Security Policy,Chinese Wall Security Policy它是一个商业安全策略,它主要用在访问有利益冲突的竞争公司间信息的情况,防止泄漏商业机密。一些概念:对象 一些基本元素,比如文件,只涉及一个公司的信息。公司组 描述一个特定公司的所有对象的集合。冲突类 所有竞争公司的对象构成的集合。,2023/3/22,19,Chinese Wall Security Policy,它们之间得关系看下面的图:,2023/3/22,20,Chinese Wall Security Policy,Chinese Wall Security Policy 的访问控制原理:某个主体只允许访问每个冲突类中的一个公司组,在一个冲突类中,这个主体一旦访问了一个公司信息,那么他就不能再访问同一冲突类的其他公司的信息了。,2023/3/22,21,Models Of Security,Model:A formal(or semi-formal)representation of the policy that the OS will enforce.模型是对策略的一种更精确的描述。安全模型常用于:测试一个策略的完全性和一致性证明一个策略协助将一个功能概念化并进行设计检验一个功能的实现是否满足需求,2023/3/22,22,Bell-La Padula Confifentiality Model,Bell-La Padula Confifentiality Model模型:对安全系统中信息流合法路径的形式化描述。在处理多密级数据的系统设计中发挥了重要作用。是一个形式化的军事安全策略,是美国国防部安全评估的主要标准。这个模型的目标:在一个保密性十分重要的系统中能够识别出合法通信。它被用来定义当一个系统需要处理不同密级数据时的安全需求。,2023/3/22,23,Bell-La Padula Confifentiality Model,原理:系统中有一个主体集合S和一个客体集合O,。在S中的每个主体s和O中的每个客体o都有各自的安全级别C(s)和C(o)。安全级别之间存在关系。有如下两个原则:简单安全原则:一个主体s可以读访问客体o,当且仅当C(o)C(s),即主体只能读取密级等于或低于它的客体。*特性:一个可以读访问客体o的主体s有权对客体p进行写操作,当且仅当C(o)C(p),即主体只能写密级等于或高于它的客体。,2023/3/22,24,Bell-La Padula Confifentiality Model,2023/3/22,25,Bell-La Padula Confifentiality Model,Bell-La Padula Confifentiality Model只考虑了信息的安全性,没有考虑数据的完整性,Biba model 对应于Bell-La Padula Model,但是只考虑数据的完整性,不考虑安全性。Biba model(略),2023/3/22,26,Tursted Operating System Design,设计一个不需要考虑安全问题的操作系统并不是件容易的事情。需要处理职权分配,考虑发生中断时对操作的切换,保证用户运行速度和精确性等等一系列问题。若再加上安全性问题就更难上加难了。这部分我们着重讨论设计操作系统时在安全方面所要考虑的问题。好的软件工程原理告诉我们,在设计系统时,安全的考虑易早不易迟。这部分我们主要考虑设计高安全等级的操作系统,着重讨论操作系统内核的设计,安全是否可以有效提供,取决于操作系统内核是如何设计的。然后讨论一点分层(或环)结构设计。,2023/3/22,27,Tursted Operating System Design,使安全覆盖操作系统全部,要做到以下两个方面:1、操作系统控制所有主客体之间的交互,要保证交互过程中都有安全考虑。2、安全必须在设计操作系统开始考虑,贯穿设计全过程,而不是设计过程中或设计完成后添加上去。,2023/3/22,28,Tursted Operating System Design,可信操作系统的要素 好的设计原理有助于安全的实现,但是下面的基本要素对于设计一个健壮、可信的操作系统是必须的:,最小特权精简机制 开放设计完全检测 基于许可 特权分离 最小共享化 易用性,2023/3/22,29,Tursted Operating System Design,普通操作系统的安全特性,用户鉴别 内存保护 文件及I/O设备访问控制 对一般客体的资源分配与访问控制 实现共享化 公平服务 内部进程通信和同步 操作系统数据保护,2023/3/22,30,Tursted Operating System Design,2023/3/22,31,Tursted Operating System Design,2023/3/22,32,Tursted Operating System Design,从上面的对比可以看出,在设计可信操作系统时,比一般操作系统多出以下方面:1、对每个设备和服务的访问控制 2、数据和程序按照共享和私有分离 3、不同用户占用内存空间的彼此分离等,2023/3/22,33,Tursted Operating System Design,可信操作系统(TOS)的安全特性,用户鉴别 强制访问控制自主访问控制客体复用保护完全仲裁可信路径审计日志精简审计日志入侵检测,2023/3/22,34,Tursted Operating System Design,用户鉴别:计算机安全性之根源。它包括俩个步骤:找出请求访问者;确定其真实身份。可信操作系统要求所有访问者都必须被唯一识别。,2023/3/22,35,Tursted Operating System Design,强制访问控制(MAC):系统内的每一个用户或主体根据他对敏感性客体的访问许可级别被赋予一个访问标签(access label);同样地,系统内的每一个客体也被赋予一敏感性标签(Sensitivity Label)以反映该信息的敏感性级别。系统内的“参考监视器”通过比较主、客体相应的标签来决定是否授予一个主体对客体的访问请求。强制访问控制策略既可以用来防止对信息的非授权的篡改(即证信息的完整性),又可以防止未授权的信息泄露(即保证信息的机密性)。,2023/3/22,36,Tursted Operating System Design,自主访问控制(DAC):它允许系统中信息的拥有者按照自己的意愿去制定谁可以以何种访问模式去访问该客体。在这一点上对于信息的拥有者来说是“自主的”。与强制访问控制策略相比,自主访问控制策略能够提供一种更为精细的访问控制粒度,它能够将所设的访问控制策略细化到具体的某个人,而这是强制访问控制策略所做不到的。在现实的系统中,自主访问控制机制用于授权用户访问系统资源。,2023/3/22,37,Tursted Operating System Design,客体复用保护:客体复用是计算机系统保证其效率的一种方式。操作系统负责控制资源分配,每当一用户程序释放其占有的资源时,系统就会允许下一个用户访问。为了防止错误发生,操作系统在重新分配资源之前必须将更改过的资源恢复可用状态。完全仲裁 了实现自主型和强制型访问控制,所有的访问权都是被集中控制的。而不是仅仅对文件进行访问控制。从而避免因为漏过访问控制而非法访问系统资源。,2023/3/22,38,Tursted Operating System Design,可信路径:计算机系统中,用户在一般情况并不直接与内核打交道,中间还有一层应用层作为接口在用户与内核之间相互作用着,这种设计能够保护内核不会被用户肆意修改窥测,但也随之带来了安全隐患,比如:在登陆系统时,用非法截取用户登陆信息来盗取用户密码。可信路径就是避过应用层,在用户与内核之间开辟一条直接的可信任的交互通道,从而防止重要信息在不可信路径上传输时被盗用。,2023/3/22,39,Tursted Operating System Design,审计日志:在用户使用系统时,对系统资源的改动都要经过系统审计,每次审计都要存储为日志。系统管理员可以通过审计日志来发现非法入侵系统。精简审计日志:如果进行完全审计,一般审计日志非常庞大,即使是一个简单的读写文件,也要访问大量资源,于是产生很多日志记录。对于管理员来说,要在庞大的日志中发现错误好像大海捞针,所以要对审计日志进行精简。,2023/3/22,40,Tursted Operating System Design,入侵检测:一些可信操作系统中都含有原始的入侵检测系统。它是一个专题,以后要详细讨论。以上讲了可信操作系统的关键要素,即设计操作系统时要特别注意的方面。下面讨论内核化设计。,2023/3/22,41,Tursted Operating System Design,内核化设计 内核是操作系统实现最底层功能的部分。在一个标准的操作系统设计中,诸如同步,进程间通信,消息传递和中断处理这类操作都是由核完成的。安全核是负责在整个操作系统中实现安全性机制的,由Ames在AME83提出,并有详细描述。它提供了与硬件、操作系统和计算系统其他部分的安全接口。安全内核设计的两种方案:1、将安全合并到系统内核中去 2、将安全作为单独的一层,从系统内核中分离出来。看下图:,2023/3/22,42,Tursted Operating System Design,2023/3/22,43,Tursted Operating System Design,2023/3/22,44,Tursted Operating System Design,将安全从内核中分离出来的优点:覆盖 对受保护客体的每一次都必须通过安全核的检测。通过这种设 计,操作系统就可以利用安全核来保证每个访问都是安全的。分离 从系统和用户空间中分离安全机制可以更容易防止和其他系统 或使用户之间的渗透。统一 所有的安全功能都是由各自单独的一组编码实现的,所以当某 一功能出现问题时,对代码的追踪就会容易一些。可修改 安全机制的修改和测试变的更易实现。紧凑 因为安全核仅仅需要实现安全性,所以它的代码相对来说计就 小的多了。确认 正因为体积小了,安全核就更容易被分析,我们就可以用形式 化方法来保证所有的安全需求是否都被考虑周到。,2023/3/22,45,Tursted Operating System Design,安全内核存在的问题:安全核的实现也许会使系统性能有所降低,因为它增加了操作系统和用户程序的接口层。而且,对安全核的设计并不意味着可以实现所有的安全功能;有时候安全核还可能非常庞大。在日常设计中,如何在安全和效率之间达到平衡,很大程度上是取决于整体操作系统的设计方法的。设计操作系统时有许多选择,最终归结到两点:将安全作为操作系统的附属还是将其作为操作系统的基础。,2023/3/22,46,Tursted Operating System Design,参考监视器(引用监控器)安全核中最为重要的部分就是参考监视器。它是负责实施安全策略的软硬件结合体,控制所有主体对客体的访问的,并将重要的安全事件写入到审计文件中。它不一定针对是一段单独的代码,而是对各种设备如:文件,存储器,内部进程通信等所有客体的访问控制集合。参考监视器只是理论上的概念,并没有实用的实现方法,一般情况下,人们把参考监视器和安全内核方法等同起来。如下图,参考监视器就象是环绕在操作系统和可信软件之外的一堵墙,所有主体访问客体,都要经过参考监视器。,2023/3/22,47,Tursted Operating System Design,2023/3/22,48,Tursted Operating System Design,只有当参考监视器不能被任意修改,也不能让恶意访问行为绕过它时,参考监视器才可以严格有效地进行控制。另外,参考监视器并不是可信操作系统中唯一的安全保证,它只是安全的一部分。,2023/3/22,49,Tursted Operating System Design,可信计算基(TCB)可信计算基(TCB)是指在可信计算机系统中每个实施安全策略的组件。TCB构成了我们所要依靠安全策略的可信操作系统的一部分。于是一个系统可以根据是否是安全的,分成TCB部分和非TCB两部分。非TCB部分不会影响TCB部分,且允许恶意的攻击者对非TCB 的部分写操作。这样就认为TCB形成了一个系统所需要的堡垒,它可以满足系统的任何安全需求。可信操作系统中所有的安全性功能都是基于TCB的。,2023/3/22,50,Tursted Operating System Design,TCB 由那些成分构成硬件 包括处理器,存储器,寄存器和I/O设备一些进程的概念 分离和保护一些关键安全进程原始文件 如安全性访问控制数据库和认证数据受保护的存储器 存储在其中的引用监控机是安全的一些内部进程通信 TCB 的不同部分之间可以相互交换数据或互相激活。上面围绕大部分操作系统的,而TCB只是其中的一个很小的子集。如下图:,2023/3/22,51,Tursted Operating System Design,2023/3/22,52,Tursted Operating System Design,TCB监视以下四个基本活动:进程激活 在进程的环境中,激活和撤消进程的频率是很高的。从一个进程切换到另一个进程需要完全改变注册表,重置映射,文件访问表,进程状态信息和其他的一些指针,其中大部分都是秘密级别的信息。执行域切换 运行在某一域的进程经常会激活其他域中的进程以获取更高密级的数据或服务。,2023/3/22,53,Tursted Operating System Design,TCB监视以下四个基本活动:存储器保护 因为每一个域中都包含存储在内存中的代码和数据,TCB就必须监控内存引用来保证每一个域的完整性和保密性。I/O操作 在一些系统中,软件涉及I/O操作,把从外层输入到最内层的I/O设备连接起来,这样,I/O操作要穿过所有的域,所以必须被监视。,2023/3/22,54,Tursted Operating System Design,TCB设计:将操作系统分为TCB部分和非TCB部分可以方便设计者和开发者,因为这样将所有和安全性相关的代码集成到一个部分。为了保证安全性的实现不会受到非TCB部分的影响,TCB代码必须以一种特别的受保护的方式运行。非TCB部分不能对TCB部分构成威胁。这样可以随时修复系统中关于设备驱动,用户接口管理器或是其它的错误。而TCB代码部分则要严格管理。由于无需对非TCB部分考虑,这样划分简化了可信操作系统的安全性设计。,2023/3/22,55,Tursted Operating System Design,分离:多道程序操作系统应该让用户之间彼此隔绝,仔细控制用户间的交互。大部分操作系统设计时为多个用户提供同一个运行环境,一份操作系统可以供好多用户同时使用。如图所示,操作系统经常分为俩个不同部分,分别处于内存的高低俩个地址段。,2023/3/22,56,Tursted Operating System Design,虚拟技术 虚拟技术就是用操作系统模拟一些计算系统资源,包括真实硬件功能和模拟硬件功能的集合,如运行指令集合的处理器,存储器,和一些I/O设备。虚拟资源必须由真实的物理硬件和软件支持,但是这些真实的资源不一定要和虚拟资源一一对应。操作系统通过这些方式提供给用户一种虚拟资源,这样,安全核就可以更精确地控制用户的访问存取了。我们看下面关于内存的例子:,2023/3/22,57,Tursted Operating System Design,2023/3/22,58,Tursted Operating System Design,虚拟机 一个传统的操作系统的直接控制是基于它的硬件设备之上的,如图5.18。IBM的R/SM为每位用户提供一个完整的虚拟机,使其不仅仅具有逻辑内存,还有逻辑I/O设备,逻辑文件和其他一些逻辑资源,而这些都是由严格分离的资源完成的。传统的操作系统和虚拟机的区别如图5.19:,2023/3/22,59,Tursted Operating System Design,2023/3/22,60,Tursted Operating System Design,2023/3/22,61,Tursted Operating System Design,层化设计:核结构的操作系统至少要包括四个层:硬件、内核、操作系统和用户。每一层都可以自定义子层。层次化可靠性 可以将一个安全性操作系统的层次化用一个同心圆表示,越靠里的层次就具有越高的机密性。而一个进程是否具有可信性以及它的访问权限是由和它相临的且更靠进圆心的层次中的进程决定的:越可信的进程就越靠近圆心。也可将可信操作系统表示为一个堆栈的形式,如图5-20所示,安全性功能仅仅是居于硬件之上。层化设计中,某个功能由不同层上的多个模块实现,各层上的模块只能实现特定敏感级别的操作。,2023/3/22,62,Tursted Operating System Design,2023/3/22,63,Tursted Operating System Design,小结:在可信操作系统设计这部分,我们讨论了隔离,安全内核,层化设计,所有这些设计的安全部分都是基于前面的安全策略的。一个好的设计必须首先有好的安全策略。,2023/3/22,64,Assurance In Trusted Operating System,这部分内容是讨论如何保证设计出的操作系统是可信的,包括对设计出的操作系统的测试、验证以及评估,以及不同国家的各种评诂标准问题。,