安全封装下的访问控制研究_第1页
安全封装下的访问控制研究_第2页
安全封装下的访问控制研究_第3页
安全封装下的访问控制研究_第4页
安全封装下的访问控制研究_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安全封装下的访问控制研究

在当前的一般操作系统中,对于文件资源的访问控制通常基于用户id。进程的权限取决于创建该进程的用户权限,系统一般包括两类用户,超级用户和普通用户。超级用户在进程中的标识为UID为0,此时进程能够执行任何特权操作;相反的是,普通用户的UID为非0,其不能执行任何特权操作。然而,针对同一用户所创建的诸多进程,虽然操作系统能够保证进程内存空间的隔离,但由于这些进程具有相同的授权标识,因此其对文件系统往往有相同的访问权限,可能导致进程访问到计算任务外的额外文件资源,从而破坏系统敏感资源的机密性及完整性。针对上述问题,目前的研究主要集中于访问控制模型、虚拟化和最小特权三个方面。然而,现有研究大多是集中于针对用户的行为控制,并不能在操作系统中具体实现针对同一用户的多个进程进行细粒度的访问控制。本文提出了操作系统中基于安全封装的访问控制实现方法,通过建立敏感客体域,利用统一访问接口增强对敏感客体的访问控制,提出了类C权限描述语言刻画进程的行为,并基于程序调用栈实现了程序状态与权限调用的绑定。最终,实现了对系统中敏感客体的安全访问控制。1基于主机的权限的保护BLP和BIBA是最为经典的强制访问控制模型,能够根据主客体的不同安全级别进行相应的访问控制;RBAC模型以角色作为载体,通过分配和取消角色来完成用户权限的授予和取消,阻止非授权主体对客体的访问。然而,上述访问控制模型在操作系统中多从用户的维度去实现访问控制,难以对同一用户启动的多个进程进行细粒度的访问控制。虚拟化技术主要通过对文件客体进行虚拟,使不同的主体访问到其权限范围所对应的虚拟客体。但虚拟环境的创建一方面增加了系统运行的开销,另一方面,在现实的操作系统中对所有敏感资源进行虚拟化实现难度较大。最小特权(LeastPrivilege)限制了使用者对系统及数据进行存取所需要的最小权限,既保证了用户能够完成所操作的任务,同时也确保非法用户或异常操作所造成的损失最小。文献提出了一种检查违背最小特权原则的方法,通过系统访问的拦截实现用户特权访问的策略符合性检查,消除不必要的特权操作。文献为UNIX操作系统内核增加定义了29种进程能够拥有的特权,每一个特权可以赋予一个进程使用系统特定功能的能力,通过这种方式分解了原UNIX系统的超级用户特权。但必须指出,在操作系统中为每一个进程主体都制定出一个合理的最小特权集是十分困难的。2确定敏感客体域本文提出了操作系统中基于安全封装的访问控制实现方法(AccessControlImplementationMethodbasedonEncapsulationinOperatingSystem,ACIME方法),如图1所示。首先,建立一个敏感客体域,通过敏感客体域,一方面能够将普通的非敏感客体文件与安全敏感客体区分开来,把敏感客体作为关键元素加以保护,通过隔离机制保证禁止对敏感客体的任意访问,强制访问路径必须经过统一访问接口。这一点与高安全等级信息系统中可信计算基必须可区分为“关键保护元素和非关键保护元素”是一致的;另一方面,统一访问接口能够将主体与敏感客体隔离开来,限制进程对敏感客体的任意访问行为,并通过安全策略,将用户的访问操作进行规范化约束,保证主体只能在符合预先设定的状态下对敏感客体进行合法的访问。3方法的重要机制3.1短连接接口1)统一访问接口的访问流程。统一访问接口是敏感客体域对外提供的访问接口,是主体对敏感客体发起访问的唯一入口点。对敏感客体的访问,基本前提是建立主体与敏感客体域之间的可信信息通道,该信息通道本质上是进程主体与统一访问接口的信息交互,因为敏感客体域是隔离的,其与域外唯一的信息交互通道是统一访问接口,下面我们给出进程与敏感客体域建立信息通道的协商过程。如图2所示,进程访问敏感客体时,首先要向统一访问接口发起建立连接的请求,统一访问接口会解析该请求,然后封装转发至引用监视器,引用监视器依据安全策略对进程进行身份认证、完整性度量,最后将请求的处理结果返回,包括是否允许连接以及用户的凭证等。依据所建立连接的时效性,可以将进程与统一访问接口的连接分为两种类型:长连接(PCON,PersistentConnection)是对敏感客体的持续访问,例如对文件的读写操作等,连接建立后不断开,其在连接建立时获取的访问凭证等在访问过程中是一直有效的;短连接(SCON,ShortTimeConnection)是对敏感客体的非连续访问,例如获取客体文件的属性操作,连接建立后只是一次访问,获取的访问凭证仅对该次访问有效,访问完成后则立即断开。与传统的接口函数调用不同,无论是长连接还是短连接,都仅仅是信息传输的一种方式,应用程序不会直接访问到敏感客体所对应内存中的内核对象,如文件句柄等,而是通过统一访问接口实现访问。统一访问接口对访问请求进行解析,判定访问的合法性,然后根据访问请求的语义封装成对敏感客体的真实访问。连接只是作为信息传输的通道,一方面能够实现有效隔离,保证程序访问到的是统一访问接口,敏感客体不会被主体直接访问,降低了由于对内核文件对象直接访问所导致的权限窃取问题;另一方面,当引用监视器判定已建立连接的程序的访问权限失效时,能够通过断开连接实现权限的及时撤销。2)接口定义。统一访问接口是敏感客体域向发起访问的主体提供的一系列函数,按照其功能的不同我们将其分为管理接口和对外服务接口。管理接口为管理员提供对敏感客体域的访问策略,提供进行安全管理的接口函数;而对外服务接口则是为上层应用程序提供对敏感客体域的访问接口函数。管理接口是为统一访问接口的运行提供可信管理的接口函数,包括:(1)安全策略管理,管理员将安全策略、程序的完整性校验值、程序合法访问行为等安全策略通过该函数注入统一访问接口,实现接口运行的策略管理;(2)会话管理,提供进程和敏感客体之间的一个逻辑连接,一方面维护进程对统一访问接口的访问与对敏感客体封装后的访问之间的映射对照关系,另一方面在多个进程同时访问敏感客体时实现会话的管理,如会话连接的建立、查询、断开等;(3)安全上下文管理,通过获取当前安全上下文对象的句柄,将其解析成为具体的安全上下文参数,得到所需的各项数据,从而维护不同主体对敏感客体访问的各种上下文参数。对外服务接口是由统一访问接口提供,由应用程序调用,主要包括:(1)连接协商接口,在访问统一访问接口时,通过该接口发起建立连接的协商请求,引用监视器对程序的身份及完整性进行可信度量,并根据度量结果返回请求的结果;(2)凭证获取接口,与统一访问接口建立连接后,进程通过该接口获得对敏感客体发起访问的凭证,该凭证中包括访问信道的密钥等;(3)访问协商接口,进程按照该接口预先定义的格式,填充对敏感客体的访问请求,通过调用该函数将访问请求通知统一访问接口,应用监视器根据安全策略进行访问请求的判定;(4)客体访问接口,进程按照访问协商获取的结果,实现对敏感客体的访问。统一访问接口能够实现主体对敏感客体的访问连接控制,禁止非授权主体对敏感客体发起访问。然而,合法的授权主体也可能因为恶意目的或非法入侵,对敏感客体发起非法的访问。关于访问的合法性问题,主要包含两方面含义,一是行为合法,二是进程的状态合法,下面我们将针对这两个方面展开研究。3.2pslc的程序属性关于行为的合法性判定问题,现有实现机制中较为经典的是杀毒软件、IDS、IPS等,其核心技术是通过特征库,将主体的行为与非法行为进行比对,以此判断行为是否是非法行为。这种利用特征库的比对方式,不可避免的存在滞后性。根据TCG对可信的定义,“行为符合预期”,我们认为进程对敏感客体的访问应该是符合程序逻辑预先制定的规范,即我们判定的标准不是一个“非法的特征库”,而是一个“合法的行为库”。所以,如何对程序合法行为的界定便成为判定的关键问题。针对此,我们提出了类C权限描述语言(PermissionSpecificationLanguageBasedonC,PSLC),一方面PSLC能够准确描述对敏感客体发起访问的主体的权能,为构建针对行为判定的安全策略库奠定了基础;另一方面在安全策略、统一访问接口、引用监视器的行为判定等处,PSLC可以统一权限的声明及判定标准,便于系统引用监视器处理流程的简化。下面给出PSLC的元素定义及权限描述方法,至于详细的语法及语义可以参照文献。定义1:PSLC由以下元素组成:A:访问行为集合,包括读、写、查询等;T:客体类型集合,包括文件、数据库、端口等;OP:操作的谓词符号集合,;ATTR:每种类型客体属性的集合。,其属性记为ATTRt;S:程序运行状态集合。PSLC对程序的权限描述符合如下的格式:其中,U表示运行该程序的用户,一个程序的权限就是针对该程序在不同状态下的一系列权能的策略描述。例如,以写操作write为例,表示在同时满足以下三个条件时,谓词write为真:(1)程序运行的状态为状态s1;(2)操作的敏感客体是设定目录下的文件;(3)写操作的目标是IPADDRESS节。条件(1)是对程序状态的限定,是对访问主体控制粒度的细化,并不是授权主体在任意状态都能对敏感客体进行操作;条件(2)是限定程序所能访问的敏感客体;条件(3)是敏感客体中的具体部分,可以是某一字段、数据库中的某一表格等,这是对敏感客体的控制粒度的细化,主体仅仅能够操作敏感客体中权能策略所指定的部分。对某一操作来说,操作op的值为真或者为假取决于参数所表示的条件的取值,即下式成立:上述给出了PSLC的权限描述框架及其含义,表1给出几个常见的谓词含义。依据以上几个表的相关定义,我们给出PSLC描述程序对敏感客体访问的一个简单实例。在该实例中,用户U1可以通过WEBAPP程序对敏感客体数据库config.mdb进行如下配置操作:(1)在任意状态下,如果表格和项的属主为U1,能够进行读写;(2)在状态s1下,主体有权限对Public表中的ServeripAddress进行写操作;(3)在状态s2下,主体有权限对Public表中的WindowSize进行写操作,且值必须为60x40或80x60其中之一。利用PSLC能够实现主体对敏感客体操作的细粒度的控制,一方面防止用户权限扩大,例如用户U1通过SQL注入等方式访问数据库中用户U2相关的表格,另一方面防止用户通过恶意信息流干扰其他用户正常应用该程序,如在未授权的状态修改服务器的IP地址或者造成窗口尺寸值的大整数溢出攻击等。3.3基于程序的敏感客体访问控制PSLC中,程序状态是一个抽象的概念,并没有给出具体的含义。进程对敏感客体访问的一个必要前提是进程应运行至策略所规定的状态,由此,进程状态与对敏感客体访问之间便形成了一种依赖关系。定义2:如果进程只有在拥有某一权限PRI1的前提下,才能够拥有另外一个权限PRI2,则称两个权限之间存在依赖关系,PRI2依赖于PRI1。用符号表示依赖关系,关系的右部依赖于左部,那么PRI1PRI2。如果不满足依赖关系,则记为。性质1:关系必然满足:因此,关系是一种非自反、非对称、传递关系。进程运行至合法状态所具备的权限与进程对敏感客体的访问权限满足关系。所以要解决敏感客体导致的信息流问题,就必须要控制进程对敏感客体的访问权限,而这显然又依赖于进程状态的判定。文献提出了将特权相关部分与无关部分分开执行的思想,基于程序的特殊注释将程序分成特权相关的Monitor和特权无关的Slave两个部分,该方法能较好的做授权控制。这种思想是认为程序的特殊注释能够成为程序中关键控制点的标识。在前文提到进程对敏感客体的访问必须通过统一的访问接口,那么具体到实际应用中,程序必然要利用已有的统一访问接口函数调用来实现对敏感客体域的访问,所以这种接口调用可以看作是对程序状态的一种标识。下面以一个简单的例子说明该标识方法。假设有一个访问协商接口函数调用为,即程序要对日志文件发起追加写操作,我们可以认为程序运行到了“追加写日志文件状态”。然而,这种标识方法却存在如下问题:一方面,标识方法较为简单,程序在调用统一访问接口函数时,系统难以确定在当前程序状态下该调用是否合法,如在上例中系统不能判断此时是否允许执行对日志文件的追加写操作,因此这种标识方法的正确性有待论证;另一方面,程序中可能存在多处相同的统一访问接口函数调用操作,此时无法准确区分每一处程序所处的具体执行状态。在实际应用程序中,一般是在某一个或几个特定函数中实现某个访问。例如,在WriteLog函数中实现对日志文件的追加写操作。因此,我们提出如下状态绑定的权限调用方法,以此实现对程序运行状态的标识。,在应用程序的函数App_function中程序请求发起对敏感客体object的operation操作。该方法的核心是,通过验证程序执行到的当前状态,判断程序访问请求的合法性。因此,依据程序运行状态对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论