在物联网系统中,访问控制(Access Control)是对用户合法使用资源的认证和控制,简单说就是根据相关授权,控制对特定资源的访问,从而防止一些非法用户的非法访问或者合法用户的不正当使用,以确保整个系统资源能够被合理正当地利用。由于物联网应用系统是多用户、多任务的工作环境,这为非法使用系统资源打开了方便之门,因此,迫切要求我们对计算机及其网络系统采取有效的安全防范措施,以防止非法用户进入系统以及合法用户对系统资源的非法使用。这就需要采用访问控制系统。
访问控制包含3方面的含义。
① 合法性:阻止没有得到正式授权的用户违法访问以及非法用户的违法访问。
② 完整性:在包含收集数据、传输信息、储存信息等一系列的步骤中,保证数据信息的完好无损,不可以随意增删与改动。
③ 时效性:在一定时效内,保证系统资源不能被非法用户篡改使用,保障系统在时效内的完整。
通过访问控制,系统可以预防和阻碍未经授权的非法用户访问和操作系统资源。
1、访问控制的基本概念
(1)访问控制的功能
访问控制应具备身份认证、授权、文件保护和审计等主要功能。
1)认证
认证就是证实用户的身份。认证必须和标识符共同起作用。认证过程首先需要用户输入账户名、用户标志或者注册标志以表明身份。账户名应该是秘密的,任何其他用户不得拥有。但为了防止账户名或用户标志泄露而出现非法用户访问,还需要进一步用认证技术证实用户的合法身份。口令是一种简单易行的认证手段,但是因为容易被猜测而比较脆弱,所以易被非法用户利用。生物技术是一种严格且有前途的认证方法,如指纹识别、视网膜识别、虹膜识别等,但因技术复杂,目前还没有被广泛采用。
2)授权
系统正确认证用户后,根据不同的用户标志分配给其不同的使用资源,这项任务称为授权。授权的实现是靠访问控制完成的。访问控制是一项特殊的任务,它将标志符ID作为关键字来控制用户访问的程序和数据。访问控制主要用在关键节点、主机和服务器,一般节点使用较少。但如果要在一般节点上增加访问控制功能,则系统应该安装相应的授权软件。在实际应用中,通常需要从用户类型、应用资源以及访问规则3个方面来明确用户的访问权限。
① 用户类型。对于一个已经被系统识别和认证了的用户,系统还要对他的访问操作实施一定的限制。对于一个通用计算机系统来讲,用户范围广,层次与权限也不同。用户类型一般有系统管理员、一般用户、审计用户和非法用户。系统管理员权限最高,可以对系统中的任何资源进行访问,并具有所有类型的访问操作权利。一般用户的访问操作要受到一定的限制,系统管理员会根据需要给这类用户分配不同的访问操作权利。审计用户负责对整个系统的安全控制与资源使用情况进行审计。非法用户则是被取消访问权利或者被拒绝访问系统的用户。
② 应用资源。应用资源是指系统中的每个用户可共同分享的系统资源。系统内需要保护的是系统资源,因此需要对保护的资源定义一个访问控制包(Access Control Packet,ACP),访问控制包会给每一个资源或资源组勾画出一个访问控制列表(Access Control List,ACL),列表中会描述哪个用户可以使用哪个资源以及如何使用。
③ 访问规则。访问规则定义了若干条件,在这些条件下可准许访问一个资源。一般来讲,规则可使用户与资源配对,然后指定该用户可以在该资源上执行哪些操作,如只读、不允许执行或不允许访问等。这些规则是由负责实施安全政策的系统管理人员根据最小特权原则来确定的,即在授予用户访问某种资源的权限时,只给予该资源的最小权限。例如,用户需要读权限时,不应该授予读写权限。
3)文件保护
文件保护是指对文件提供的附加保护,其可使非授权用户不可读取文件。一般采用对文件加密的附加保护。
4)审计
审计是记录用户系统所进行的所有活动的过程,即记录用户违反安全规定使用系统的时间、日期以及用户活动。因为可能收集的数据量非常大,所以,良好的审计系统应具有进行数据筛选并报告审计记录的工具,此外,还应容许工具对审计记录做进一步的分析和处理。
(2)访问控制的关键要素
访问控制是指主体依据某些控制策略对客体本身或其他资源进行不同权限的访问。访问控制包括3个要素:主体、客体和控制策略。
1)主体
主体是可以在信息客体间流动的一种实体。主体通常指的是访问用户,但是作业或设备也可以成为主体。所以,对文件进行操作的用户是一种主体,用户调度并运行的某个作业也是一种主体,检测电源故障的设备还是一个主体。大多数交互式系统的工作过程是:用户首先在系统中注册,然后启动某一进程以完成某项任务,该进程继承了启动它的用户的访问权限。在这种情况下,进程也是一个主体。一般来讲,审计机制应能对主体涉及的某一客体进行的与安全有关的所有操作都做相应的记录和跟踪。
2)客体
客体本身是一种信息实体,或者是从其他主体或客体接收信息的载体。客体不受它所依存的系统的限制,其可以是记录、数据块、存储页、存储段、文件、目录、目录树、邮箱、信息、程序等,也可以是位、字节、字、域、处理器、通信线路、时钟、网络节点等。主体有时也可以被当作客体,例如,一个进程可能包含多个子进程,这些子进程就可以被认为是一种客体。在一个系统中,作为一个处理单位的最小信息集合就称为一个文件,每一个文件都是一个客体。但是,如果文件可以分成许多小块,并且每个小块又可以单独处理,那么每个小块也都是一个客体。另外,如果文件系统被组织成了一个树形结构,那么这种文件目录也是客体。
在有些系统中,逻辑上所有的客体都作为文件处理。每种硬件设备都作为一种客体来处理,因而,每种硬件设备都具有相应的访问控制信息。如果一个主体准备访问某个设备,则该主体必须具有适当的访问权,而对设备的安全校验机制将对访问权进行校验。例如,某主体想对终端进行写操作,则需要将想写入的信息先写入相应的文件中,安全机制将根据该文件的访问信息来决定是否允许该主体对终端进行写操作。
3)控制策略
控制策略是主体对客体的操作行为集和约束条件集,也是主体对客体的控制规则集。这个规则集直接定义了主体对客体可以进行的作用行为和客体对主体的条件约束。控制策略体现了一种授权行为,即客体对主体的权限允许,这种允许不可超越规则集。
访问控制系统的3个要素可以使用三元组(S、O、P)来表示,其中S表示主体,O表示客体,P表示许可。当主体提出一系列正常请求信息I1,I2,…,In时,请求信息会通过物联网系统的入口到达控制规则集监视的监控器,由控制规则集来判断允许或拒绝请求。在这种情况下,必须先确认主体是合法的,而不是假冒的,也就是必须对主体进行认证。主体通过认证后才能访问客体,但并不保证其有权限对客体进行操作。客体对主体的具体约束由访问控制表来控制实现,对主体的验证一般都是通过鉴别用户标志和用户密码来实现的。用户标志是一个用来鉴别用户身份的字符串,每个用户有且只能有唯一的一个用户标志,以便与其他用户有所区别。当一个用户在注册系统时,他必须提供其用户标志,然后系统才会执行一个可靠的审查来确认当前用户就是对应用户标志的那个用户。
当前访问控制实现的模型普遍采用了主体、客体、授权的定义和这3个定义之间的关系的方法来描述。访问控制模型能够对计算机系统中的存储元素进行抽象表达。访问控制要解决的一个基本问题便是主动对象(如进程)如何对被动的受保护对象(如被访问的文件等)进行访问,并且按照安全策略进行控制。主动对象称为主体,被动对象称为客体。
针对一个安全的系统,或者是将要在其上实施访问控制的系统,一个访问可以对被访问的对象产生以下作用:一是对信息的抽取;二是对信息的插入。对于被访问对象来说,可以有“只读不修改”“只读修改”“只修改不读”“既读又修改”4种访问方式。
访问控制模型可以根据具体的安全策略的配置来决定一个主体对客体的访问属于以上4种访问方式中的哪一种,并且可以根据相应的安全策略来决定是否给予主体相应的访问权限。
(3)访问控制策略的实施
访问控制策略是物联网信息安全的核心策略之一,其任务是保证物联网信息不被非法使用和非法访问,为保证信息基础的安全性提供一个框架,提供管理和访问物联网资源的安全方法,规定各要素需要遵守的规范与应负的责任,为物联网系统安全提供可靠依据。
1)访问控制策略的基本原则
访问控制策略的制定与实施必须围绕主体、客体和控制规则集三者之间的关系展开。具体原则如下。
① 最小特权原则。最小特权原则指主体执行操作时,按照主体所需权利的最小化原则分配给主体权利。最小特权原则的优点是最大限度地限制了主体实施授权行为,可以避免来自突发事件、错误和未授权用户主体的危险,即为了达到一定的目的,主体必须执行一定的操作,但主体只能做允许范围内的操作。
② 最小泄露原则。最小泄露原则指主体执行任务时,按照主体所需要知道的信息最小化的原则分配给主体权利。
③ 多级安全原则。多级安全原则指主体和客体间的数据流向和权限控制按照安全级别进行划分,包括绝密、秘密、机密、限制和无级别5级。多级安全原则的优点是可避免敏感信息扩散。对于具有安全级别的信息资源,只有安全级别比它高的主体才能够访问它。
2)访问控制策略的实现方式
访问控制的安全策略有:基于身份的安全策略和基于规则的安全策略。目前使用这两种安全策略的基础都是授权行为。
① 基于身份的安全策略。
基于身份的安全策略与鉴别行为一致,其目的是过滤对数据或资源的访问,只有能通过认证的主体才有可能正常使用客体的资源。基于身份的安全策略包括基于个人的安全策略和基于组的安全策略。
基于个人的安全策略是指以用户为中心建立的一种策略。这种策略由一些列表组成,这些列表限定了针对特定的客体,哪些用户可以实现何种策略操作行为。
基于组的安全策略是基于个人的安全策略的扩充,指一些用户被允许使用同样的访问控制规则访问同样的客体。
基于身份的安全策略有两种基本的实现方法:访问能力表和访问控制列表。访问能力表提供了针对主体的访问控制结构,访问控制列表提供了针对客体的访问控制结构。
② 基于规则的安全策略
基于规则的安全策略中的授权通常依赖于敏感性。在一个安全系统中,对数据或资源应该标注安全标记。代表用户进行活动的进程可以得到与其原发者相应的安全标记。
基于规则的安全策略在实现时,由系统通过比较用户的安全级别和客体资源的安全级别来判断是否允许用户进行访问。
2、访问控制的分类
访问控制可以限制用户对应用中关键资源的访问,防止非法用户进入系统及合法用户对系统资源的非法使用。在传统的访问控制中,一般采用自主访问控制和强制访问控制。随着分布式应用环境的出现,又发展出了基于对象的访问控制、基于任务的访问控制、基于角色的访问控制、基于属性的访问控制等多种访问控制技术。
1)自主访问控制
自主访问控制(Discreytionary Access Control,DAC)是指用户有权对自身所创建的访问对象(如文件、数据表等)进行访问,并可将对这些对象的访问权授予其他用户和从授予权限的用户处收回其访问权限。
2)强制访问控制
强制访问控制(Mandatory Access Control,MAC)是指由系统(通过专门设置的系统安全员)对用户所创建的对象进行统一的强制性控制,按照规定的规则决定哪些用户可以对哪些对象进行什么样的操作系统类型的访问,即使是创建者用户,其在创建一个对象后,也可能无权访问该对象。
3)基于对象的访问控制
DAC或MAC模型的主要任务都是对系统中的访问主体和受控对象进行一维的权限管理。当用户数量多、处理的信息数据量巨大时,用户权限的管理任务将变得十分繁重且难以维护,这就会降低系统的安全性和可靠性。
对于海量的数据和差异较大的数据类型,需要用专门的系统和专门的人员加以处理,如果采用基于角色的访问控制模型,安全管理员除了需要维护用户和角色的关联关系外,还需要将庞大的信息资源访问权限赋予有限个角色。
当信息资源的种类增加或减少时,安全管理员必须更新所有角色的访问权限设置,如果受控对象的属性发生变化,以及需要将受控对象不同属性的数据分配给不同的访问主体进行处理时,则安全管理员将不得不增加新的角色,还必须更新原来所有角色的访问权限设置以及访问主体的角色分配设置。
这样的访问控制需求变化往往是不可预知的,这会导致访问控制管理难度增加工作量变大。因此,在这种情况下,有必要引入基于受控对象的访问控制模型。
控制策略和控制规则是基于对象的访问控制(Object-based Access Control,OBAC)系统的核心所在。在基于受控对象的访问控制模型中,会将访问控制列表与受控对象或受控对象的属性相关联,并会将访问控制选项设计成为用户、组或角色及其对应权限的集合;同时允许对策略和规则进行重用、继承和派生操作。这样,不仅可以对受控对象本身进行访问控制,也可以对受控对象的属性进行访问控制,而且派生对象可以继承父对象的访问控制设置,这对于信息量巨大、信息内容更新变化频繁的信息管理系统非常有益,可以减轻由信息资源的派生、演化和重组等带来的分配、设定角色权限等工作量。
OBAC系统从信息系统的数据差异变化和用户需求出发,有效地解决了信息数据量大、数据种类繁多、数据更新变化频繁的大型信息管理系统的安全管理问题。同时,从受控对象的角度出发,将访问主体的访问权限直接与受控对象相关联。一方面,定义对象的访问控制列表,使增、删、修改访问控制项易于操作;另一方面,当受控对象的属性发生改变,或者受控对象发生继承和派生行为时,无须更新访问主体的权限,只须修改受控对象的相应访问控制项即可,从而减少了访问主体的权限管理,降低了授权数据管理的复杂性。
4)基于任务的访问控制
基于任务的访问控制(Task-based Access Control,TBAC)是从应用和企业层面来解决安全问题的,从任务(活动)的角度来建立安全模型和实现安全机制,在任务处理的过程中提供动态、实时的安全管理。
在TBAC模型中,对象的访问权限控制并不是静止不变的,而是会随着执行任务的上下文环境发生变化。TBAC首要考虑的是在工作流的环境中对信息的保护问题:在工作流环境中,数据的处理与上一次的处理相关联,相应的访问控制也是如此,因此TBAC是一种上下文相关的访问控制模型。其次,TBAC不仅能对不同的工作流实行不同的访问控制策略,还能对同一工作流的不同任务实例实行不同的访问控制策略。从这个意义上说,TBAC是基于任务的,这也表明,TBAC是一种基于实例(instance-based)的访问控制模型。
TBAC模型由工作流、授权结构体、受托人集、许可集这4部分组成。
任务(task)是工作流中的一个逻辑单元,是一个可区分的动作,与多个用户相关,也可能包括几个子任务。授权结构体(authorization unit)是任务在计算机中进行控制的一个实例。任务中的子任务对应于授权结构体中的授权步。
授权结构体是由一个或多个授权步(authorization step)组成的结构体,它们在逻辑上是联系在一起的。授权结构体分为一般授权结构体和原子授权结构体。一般授权结构体内的授权步依次执行,原子授权结构体内的每个授权步紧密联系,其中任何一个授权步失败都会导致整个结构体的失败。
授权步表示一个原始授权处理步,是指在一个工作流中对处理对象的一次处理过程。授权步是访问控制所能控制的最小单元,由受托人集(trustee-set)和多个许可集(permissions-set)组成。
受托人集是可被授予执行授权步的用户的集合,许可集则是受托集的成员被授予授权步时拥有的访问许可。在授权步初始化以后,一个来自受托人集中的成员将被授予授权步,我们称这个受托人为授权步的执行委托者,该受托者执行授权步过程中所须许可的集合称为执行者许可集。授权步之间或授权结构体之间的相互关系称为依赖(dependency),依赖反映了基于任务的访问控制的原则。授权步的状态变化一般由自身管理,即依据执行的条件自动变迁状态,但有时也可以由管理员进行调配。
一个工作流的业务流程由多个任务构成,而一个任务对应于一个授权结构体,每个授权结构体由特定的授权步组成。授权结构体之间以及授权步之间通过依赖关系联系在一起。在TBAC中,一个授权步的处理可以决定后续授权步对处理对象的操作许可,这些许可的集合称为激活许可集。执行者许可集和激活许可集一起称为授权步的保护态。
TBAC模型一般用五元组(S,O,P,L,AS)表示,其中S表示主体,O表示客体,P表示许可,L表示生命期(lifecycle),AS表示授权步。由于任务都是有时效性的,所以在基于任务的访问控制中,用户对于授予他的权限的使用也是有时效性的。因此,若P是授权步AS所激活的权限,那么L就是授权步AS的存活期限。在授权步AS被激活之前,它的保护态是无效的,其中包含的许可不可使用。当授权步AS被触发时,它的执行委托者开始拥有执行者许可集中的权限,同时它的生命期开始倒记时。在其生命期间,五元组(S,O,P,L,AS)有效;生命期终止时,五元组(S,O,P,L,AS)无效,执行委托者所拥有的权限被回收。
TBAC的访问政策及其内部组件关系一般由系统管理员直接配置。通过授权步的动态权限管理。TBAC支持最小特权原则和最小泄露原则,在执行任务时只给用户分配所需的权限,未执行任务或任务终止后用户不再拥有所分配的权限;而且在执行任务过程中,当某一权限不再被使用时,授权步会自动将该权限回收;另外,对于敏感的任务需要不同的用户执行,可以通过授权步之间的分权依赖加以实现。
TBAC从工作流中的任务角度建模,可以依据任务和任务状态的不同,对权限进行动态管理。因此,TBAC非常适合分布式计算和多点访问控制的信息处理控制以及在工作流、分布式处理和事务管理系统中的决策制定。
5)基于角色的访问控制
基于角色的访问控制(Role-based Access Control,RBAC)的基本思想是将访问许可权分配给一定的角色,用户通过饰演不同的角色来获得角色所拥有的访问许可权。这是因为在很多实际应用中,用户并不是可以访问的客体信息资源的所有者(这些信息属于企业或公司)。因此,访问控制应该基于员工的职务而不是基于员工在哪个组或谁是信息的所有者,即访问控制是由各个用户在部门中所担任的角色来确定的。例如,一个学校可以有老师、学生和其他管理人员等角色。
RBAC从控制主体的角度出发,根据管理中相对稳定的职权和责任来划分角色,将访问权限与角色相联系,这点与传统的MAC和DAC将权限直接授予用户的方式不同。RBAC通过给用户分配合适的角色,让用户与访问权限相联系。角色成为了访问控制中访问主体和受控对象之间的一座桥梁。
角色可以被看作一组操作的集合,不同的角色具有不同的操作集,这些操作集是由系统管理员分配给角色的。在下面的实例中,我们假设Tch1,Tch2,Tch3,…,Tchi是老师,Stud1,Stud2,Stud3,…,Studj是学生,Mng1,Mng2,Mng3,…,Mngk是教务处管理人员,那么老师的权限为TchMN={查询成绩、上传所教课程的成绩};学生的权限为Stud MN={查询成绩、反映意见};教务处管理人员的权限为MngMN={查询成绩、修改成绩、打印成绩清单}。
依据角色的不同,每个主体只能执行自己所制定的访问功能。用户在一定的部门中具有一定的角色,其所执行的操作与其所扮演的角色的职能相匹配,这正是基于角色的访问控制(RBAC)的根本特征:依据RBAC策略,系统定义了各种角色,每种角色可以完成一定的职能,不同的用户根据其职能和责任被赋予相应的角色,一旦某个用户成为某角色的成员,则该用户就可以完成该角色所具有的职能。
因为企业担心冗长而复杂的实施过程,并且雇员访问权要发生变化,所以许多企业往往不愿意实施基于角色的访问控制。完成基于角色的矩阵可能是一个需要企业花费几年时间的复杂过程。有一些新方法可以缩短这个过程,例如,企业可以将人力资源系统作为数据源,收集所有雇员的部门、职位以及企业的层次结构等信息,并将这些信息用于创建每个访问级别的角色,从活动目录等位置获得当前的权利,实现不同角色的雇员的数据共享。
6)基于属性的访问控制
基于属性的访问控制(Attribute-based Access Control,ABAC)主要针对面向服务的体系结构和开放式网络环境,在这种环境中,能够基于访问的上下文建立访问控制策略,处理主体和客体的异构性和变化性。RBAC已不能适应这样的环境。RBAC不能直接在主体和客体之间定义授权,而是需要将他们关联的属性作为授权决策的基础,并利用属性表达式描述访问策略。ABAC能够根据相关实体属性的变化,适时更新访问控制决策,从而提供一种更细粒度的、更加灵活的访问控制方法。
属性虽然是一个变量,但是相对而言它的规则策略是稳定且不易改变的。ABAC之所以能运用于用户动态变化的访问控制中,就是因为它利用了策略的固定性所产生的作用。
3、访问控制的基本原则
访问控制机制是用来实施对资源访问加以限制的策略的机制,这种策略把对资源的访问权限只授于了那些被授权用户。应该建立起申请、建立、发出和关闭用户授权的严格的制度,以及管理和监督用户操作责任的机制。
为了获取系统的安全,授权应该遵守访问控制的3个基本原则。
1)最小特权原则
最小特权原则是系统安全中最基本的原则之一。最小特权(Least Privilege)指的是“在完成某种操作时所赋予网络中每个主体(用户或进程)必不可少的特权”。最小特权原则是指“应限定网络中每个主体所需的最小特权,以确保可能的事故、错误、网络部件的篡改等原因造成的损失最小”。
最小特权原则使用户所拥有的权力不能超过它执行工作时所需的权限。最小特权原则一方面给予主体“必不可少”的特权,保证了所有的主体都能在所赋予的特权之下完成所需要完成的任务或操作;另一方面,它只给予主体“必不可少”的特权,这也限制了每个主体所能进行的操作。
2)多人负责原则
多人负责即授权分散化,在功能上划分关键的任务由多人来共同承担,以保证没有任何个人具有完成任务的全部授权或信息,如将责任做分解以确保没有一个人具有完整的密钥。
3)职责分离原则
职责分离是保障安全的一个基本原则。职责分离是指将不同的责任分派给不同的人员以期达到互相牵制的作用,消除一个人执行两项不相容的工作的风险,如收款员、出纳员、审计员应由不同的人担任。计算机环境下也要有职责分离,为避免安全上的漏洞,有些许可不能同时被同一用户获得。
4、BLP访问控制
BLP模型是由戴维和莱纳德于1973年提出并于1976年整合、完善的安全模型。BLP模型的基本安全策略是“下读上写”,即主体对客体向下读、向上写。主体可以读安全级别比它低或相等的客体,可以写安全级别比它高或相等的客体。“下读上写”的安全策略保证了数据库中的所有数据只能按照安全级别从低到高流动,从而保证了敏感数据不泄露。
(1)BLP安全模型
BLP安全模型是一种访问控制模型,它通过制定主体对客体的访问规则和操作权限来保证系统信息的安全性。BLP模型中基本的安全控制方法有2种。
1)强制访问控制(MAC)
MAC主要是通过“安全级”来进行的。访问控制通过引入“安全级”“组集”和“格”的概念,为每个主体规定了一系列的操作权限和范围。“安全级”通常由“普通、秘密、机密、绝密”4个不同的等级构成,用以表示主体的访问能力和客体的访问要求。“组集”就是主体能访问客体所从属的区域的集合,如“部门”“科室”“院系”等。通过“格”定义一种比较规则,只有在这种规则下,主体控制客体时才允许主体访问客体。MAC是BLP模型实现控制手段的主要方法。
作为实施强制型安全控制的依据,主体和客体均要求被赋予一定的 “安全级”。其中,人作为安全主体,其部门集表示它可以涉猎哪些范围内的信息,而一个信息的部门集则表示该信息所涉及的范围,这里有3点要求:
① 主体的安全级高于客体,当且仅当主体的密级高于客体的密级,且主体的部门集包含客体的部门集;
② 主体可以读客体,当且仅当主体的安全级高于或等于客体的安全级;
③ 主体可以写客体,当且仅当主体的安全级低于或等于客体的安全级。
BLP模型给每个用户及文件赋予一个访问级别,如最高秘密级(Top Secret)、秘密级(Secret)、机密级(Confidential)及无级别级(Unclassified)。其级别由高到低为T>S>C>U,系统根据主体和客体的敏感标记来决定访问模式。访问模式包括以下4种。
下读(read down):用户级别大于文件级别的读操作。
上写(write up):用户级别小于文件级别的写操作。
下写(write down):用户级别大于文件级别的写操作。
上读(read up):用户级别小于文件级别的读操作。
2)自主访问控制(DAC)
DAC也是BLP模型中非常重要的实现控制的方法。DAC通过客体的属主自行决定其访问范围和方式,实现对不同客体的访问控制。在BLP模型中,DAC是MAC的重要补充和完善。
主体对其拥有的客体有权决定自己和他人对该客体应具有怎样的访问权限。最终的结果是,在BLP模型的控制下,主体要获取对客体的访问,必须同时通过MAC和DAC这两种安全控制设施。
依据BLP模型所制定的原则是利用不上读或不下写来保证数据的保密性,如图1所示,既不允许低信任级别的用户读高敏感度的信息,也不允许高敏感度的信息写入低敏感度区域,禁止信息从高级别流向低级别。MAC通过这种梯度安全标签实现信息的单向流通。
图1 BLP模型
(2)BLP模型的优缺点
BLP模型的优点如下。
① BLP模型是一种严格的形式化描述。
② BLP模型控制信息只能由低向高流动,这能满足军事部门这一类对数据保密性要求特别高的机构的需求。
BLP模型的缺点如下。
① 上级对下级发文受到限制。
② 部门之间信息的横向流动被禁止。
③ 缺乏灵活、安全的授权机制。
5、基于角色的访问控制
基于角色的访问控制(Role-based Access Control,RBAC)是美国NIST提出的一种新的访问控制技术。该技术的基本思想是将用户划分成与其所在组织结构体系相一致的角色,并将权限授予角色而不是直接授予主体,主体通过角色分派来得到客体操作权限从而实现授权。由于角色在系统中具有相对于主体的稳定性,更便于直观地理解,因此可以大大降低系统授权管理的复杂性,减少安全管理员的工作量。
在RBAC的发展过程中,最早出现的是RBAC96模型和ARBAC模型,此处只对RBAC96模型进行介绍。RBAC96模型的成员包括RBAC0、RBAC1、RBAC2和RBAC3。RBAC0是基于角色访问控制模型的基本模型,规定了RBAC模型的最小需求;RBAC1为角色层次模型,在RBAC0的基础上加入了角色继承关系,可以根据组织内部职责和权利来构造角色与角色之间的层次关系;RBAC2为角色的限制模型,在RBAC0的基础上加入了各种用户与角色之间、权限与角色之间以及角色与角色之间的限制关系,如角色互斥、角色最大成员数、前提角色和前提权限等;RBAC3为统一模型,它不仅包括角色的继承关系,还包括限制关系,是RBAC1和RBAC2的集成。
基于角色访问控制的要素包括用户、角色、许可等基本定义。在RBAC中,用户就是一个可以独立访问计算机系统中的数据或者用数据表示的其他资源的主体。角色是指一个组织或任务中的工作或者位置,它代表了一种权利、资格和责任。许可(特权)就是允许对一个或多个客体执行操作。一个用户可经授权而拥有多个角色,一个角色可由多个用户构成;每个角色可拥有多种许可,每个许可也可授权给多个不同的角色。每个操作可施加于多个客体(受控对象),每个客体也可以接受多个操作。上述要素的实现形式介绍如下。
① 用户表(USERS)包括用户标志、用户姓名、用户登录密码。用户表是系统中的个体用户集,会随用户的添加与删除动态变化。
② 角色表(ROLES)包括角色标识、角色名称、角色基数、角色可用标识。角色表是系统角色集,角色是由系统管理员来定义的。
③ 客体表(OBJECTS)包括对象标志、对象名称。客体表是系统中所有受控对象的集合。
④ 操作算子表(OPERATIONS)包括操作标志、操作算子名称。系统中所有受控对象的操作算子构成了操作算子表。
⑤ 许可表(PERMISSIONS)包括许可标志、许可名称、受控对象、操作标志。许可表给出了受控对象与操作算子的对应关系。
RBAC系统由RBAC数据库、身份认证模块、系统管理模块和会话管理模块组成。RBAC数据库与各模块的对应关系如图2所示。
图2 RBAC数据库与各模块的对应关系
身份认证模块通过用户标志和用户口令来确认用户身份。此模块仅使用RBAC数据库中的USERS表。
系统管理模块主要完成用户增减(使用USERS表)、角色增减(使用ROLES表)、用户/角色的分配(使用USERS表、ROLES表、用户/角色分配表、用户/角色授权表)、角色/许可的分配(使用ROLES表、PERMISSIONS表、角色/许可授权表)、角色间关系的定义(使用ROLES表、角色层次表、静态互斥角色表、动态互斥角色表),其中每个操作都带有参数,也都有一定的前提条件。操作可使RBAC数据库发生动态变化。系统管理员可使用该模块来初始化和维护RBAC数据库。
系统管理模块的操作包括添加用户、删除用户、添加角色、删除角色、设置角色可用性、为角色增加许可、取消角色的某个许可、为用户分配角色、取消用户的某个角色、设置用户授权角色的可用性、添加角色继承关系、取消角色继承、添加一个静态角色互斥关系、删除一个静态角色互斥关系、添加一个动态角色互斥关系、删除一个动态角色互斥关系、设置角色基数等。
会话管理模块会结合RBAC数据库来管理会话,包括会话的创建与取消以及对活跃角色的管理。此模块会使用USERS表、ROLES表、动态互斥角色表、会话表和活跃角色表来执行操作。
RBAC系统的运行步骤如下。
① 用户登录时向身份认证模块发送用户标志、用户口令,确认用户身份。
② 会话管理模块在RBAC数据库中检索该用户的授权角色集并将其送回用户。
③ 用户从中选择本次会话的活跃角色集,在此过程中会话管理模块维持动态角色互斥。
④ 会话创建成功,本次会话的授权许可体现在菜单与按扭上,若不可用,则显示为灰色。
⑤ 在此会话过程中,系统管理员若要更改角色或许可,则可在此会话结束后进行,或者在终止此会话后立即进行。
图3给出了基于RBAC的用户集合、角色集合和资源集合之间的多对多的关系。理论上,一个用户可以通过多个角色访问不同资源。但是,在实际应用系统中,通常给一个用户授予一个角色,只允许其访问一种资源,这样就可以更好地保证资源的安全性。
图3 RBAC中用户集合、角色集合和资源集合的关系
6、基于信任评估的动态访问控制
在物联网环境中,用户可以自由地加入或退出网络,而且用户数量可能相当庞大,为每个用户定义访问控制策略并不现实,因此,需要提出一种新的机制来解决物联网环境的动态访问控制问题。
(1)基于信任评估的动态访问控制模型
我们在对用户信任度进行评估的基础上,根据用户的信任度对用户进行分组,对用户集合进行角色的分配和访问控制,提出了基于信任评估的动态访问控制(Trust Evaluation-based Dynamic Role Access Control,TE-DAC)模型。该模型将信任度与访问控制相结合,可以体现系统的动态性。
TE-DAC模型综合了信任管理和访问控制的优势,通过对用户进行信任评估,确定用户的信任度,进而即可根据其信任度和获得的角色对用户进行访问授权。TE-DAC模型扩展了RBAC模型,增加了上下文监测、用户会话监控、用户信任度评估、根据用户信任度对用户角色进行权限指派等功能;同时通过将角色分为禁止状态(disable)、允许状态(enable)和激活状态(active),使得模型具有了更好的灵活性,方便用户的职责分离(Separation of Duty,SoD)。TE-DAC模型如图4所示。
图4 TE-DAC模型
TE-DAC模型的一个重要的特征是区分了角色的允许状态和激活状态。在该模型中,角色可以有3种状态:禁止状态、允许状态和激活状态。若角色处于禁止状态,则该角色不可以在任何用户会话的过程中使用,例如,用户不能获得分配给该角色的任何权限。允许状态表示在满足条件时用户可以激活该角色,即如果一个用户激活了某个角色,该角色就变为了激活状态。处于激活状态的角色表示至少一个用户激活了该角色,若只有一个用户使用该角色,则执行一次休眠操作后,该角色就会转变为允许状态;若有N个用户使用该角色,则执行N次休眠操作后,该角色才会转变为允许状态,否则,其仍是激活状态。角色处于激活状态时,重复激活不改变其状态。若有禁止事件发生,则角色会转变为禁止状态,不管其原来处于允许状态还是激活状态。
(2)基于信任评估的动态访问控制过程
TE-DAC系统与传统的访问控制系统的一个重要区别是可以在一个适当的粒度下控制访问请求和计算资源。信任作为一个计算参数,反映了用户行为的可信度。在物联网系统中,用户的每次访问请求,都由访问认证中心(Access Authorization Center,AAC)进行信任度检查,以判断用户是否满足允许访问的条件。在该模型中,信任度被作为用户的一个属性而进行综合认证。认证模块由策略执行点和策略决策点组成。
用户登录系统后,根据用户的身份为其分配相应的角色,此时的角色没有被指派任何属性,角色无任何权限,处于禁止状态,因此,用户不能进行任何操作。通过信任评估模块获得用户的信任度后,将其和其他属性作为角色属性赋予角色,然后查询策略库中的角色权限表,为角色分配相应的操作权限,此时,角色的状态转变为允许状态,可被激活,用户可通过事件激活角色以进行相应的操作。TE-DAC模型的访问控制过程如图5所示。
图5 TE-DAC模型的访问控制过程
访问控制过程包含6个步骤。
① 用户(User)将访问请求发送给安全管理中心(Security Management Engine,SME),访问请求中包含用户ID、密码等认证信息。
② SME通过对用户进行身份认证和信任评估,根据访问控制策略生成用户的访问授权策略并将其返回给用户。该步骤更详细的介绍如下:
a. 用户的计算请求提交给策略执行点(Policy Enforcement Point,PEP);
b. PEP向策略决策点(Policy Decision Point,PDP)发出访问决策请求,该请求包括用户的身份信息及服务类型信息;
c. PDP向身份认证系统提交用户的安全凭证,以验证用户身份是否合法。如果认证失败,则生成终止访问的信息并执行步骤h;
d. 若用户通过了身份认证,则PDP会根据用户身份为该用户分配相应的角色,此时的角色处于禁止状态;
e. PDP向信任评估引擎(Trust Evaluation Engine,TEE)发出信任评估请求,TEE通过查询信任数据库评估用户的行为信任度,并将评估结果返回给PDP,同时用新的信任度更新信任数据库;
f. PDP查询策略库中的角色属性表;
g. PDP将步骤e中获得的用户信任度和步骤f中获得的角色属性指派给该用户的角色,然后查询策略库中的权限分配表(Permissions Assignment Table,PAT),获取角色当前对应的权限。PDP检查该权限与用户请求的权限,若二者相同或该权限包含用户请求的权限,则允许该次访问请求,并生成允许访问的信息;若该权限小于用户请求的权限,则拒绝该次访问请求,并生成拒绝访问的信息;
h. PEP执行PDP的决定,如果收到允许访问的信息,则激活用户的角色;如果收到拒绝访问的信息,则将其返回给用户;更新策略库。
③ 用户向资源管理器(Resource Manager,RM)提交资源请求服务。
④ RM启动资源调度算法,为用户分配相应的服务提供者,然后使用分发程序将用户任务分发到相应的服务提供者进行执行。调度时,将服务提供者的信任作为调度算法的参数可以更有效地进行资源调度控制,提高资源利用率。
⑤ 在此次交互结束时,用户可以基于资源的性能等特性计算服务提供者的信任度,并将计算结果发送给SME以进行服务提供者的信任更新。
⑥ 同时,服务提供者也会对用户进行同样的信任更新。
7、基于信任关系的动态服务授权
对于服务(资源)提供者来说,其可根据服务请求者的不同OTD,把服务请求者分别映射到不同的角色。同时,服务提供者在接到多个服务请求者请求的情况下,也需要按照不同的策略来分配资源,授权用户访问资源。
(1)形式化描述
下面从服务提供者的角度给出一种基于信任关系的动态服务授权策略的形式化描述。
设实体Pj向服务提供者Pi请求某种服务,Pi对Pj的总体信任度Γ(Pi,Pj)有P个评估等级c1,c2,…,cP,其中0≤cp≤1(p=1,2,…,P)。评估等级空间记作U,表示为U={c1,c2,…,cP},若评估等级空间U具有如下性质:ci∩cj=ϕ(i≠j),且c1<c2<…<cP,即ck+1比ck强,则称U={c1,c2,…,cP}为一个有序分割类。
设实体Pi可提供P个级别的服务S={s1,s2,…,sP},且S是一个有序分割类,S和总体信任度Γ(Pi,Pj)之间的映射函数Ψ表示为:
分界点c1,c2,…,cP可以根据信任度的实数空间的边界点确定,实体Pj向服务提供者Pi请求某种服务,Pi首先要根据Pj的信任度级别Γ(Pi,Pj)决定它所能得到的服务质量,这样既可以分级对不同的实体提供不同的服务,又有利于降低系统可能存在的风险。
(2)基于信任关系的动态服务选择
在物联网系统中,服务双方通过身份认证和访问控制后,为对方提供多少资源也是一个非常重要的问题。如果交易一方提供虚假计算或存储资源,则预先确定的任务可能会被延期执行;如果交易一方恶意撤销计算或存储资源,则预先确定的任务将无法完成。针对这些问题,需要从信任评估的角度来实现交易双方的服务资源选择。
下面是从服务请求者的角度给出的一种基于信任度的资源选择方法。
令∀Pi∈S为计算市场中的服务请求者,O={Pj,j∈[1,M]}为服务提供者(资源的集合),∀Pi∈S向∃Pj∈O请求服务的过程定义为Pi和Pj的交易,而交易回馈信息则包含了Pi对Pj的信任评分及相关认证信息。
设ΓD(Pi,Pj)为Pi对Pj的直接信任度,表示Pi根据其与Pj的直接交易回馈信息而得到的信任关系。设ΓI(Pi,Pj)表示Pi根据其他节点的反馈而得到的其对Pj的信任,即反馈信任度。设Γ(Pi,Pj)为由ΓD(Pi,Pj)和ΓI(Pi,Pj)聚合而得到的Pi对Pj的总体信任评价(OTD)。
物联网系统中基于信任的资源选择算法步骤如下。
① 从资源信息中心获取可用资源的列表O={Pj,j∈[1,M]};
② 根据操作系统、体系结构和CPU个数等硬性需求,过滤掉不满足条件的计算资源;
③ 根据相关算法计算每一个资源的总体信任度Γ(Pi,Pj),根据用户作业的信任需求阈值,过滤掉信任度低于该阈值的资源;
④ 根据计算得到的每一个资源的OTD,对可选资源进行排序;
⑤ 根据排序结果,选择OTD值最大的资源,并提交作业到该资源;
⑥ 等待作业结果,如果作业被按时成功执行,则进行后续工作,如支付报酬、下载结果文件等,然后回馈正面的评价,并根据相关算法增加直接信任度;
⑦ 如果执行作业超时或失败,则回馈较低的评价,根据相关算法降低直接信任度,并从排序列表中删除该资源。
⑧ 跳转到步骤③,直到作业完成。
现在分析这个算法的优缺点。假设每个服务请求者都是自私的,希望自己获得的服务是最好的。如果对某个服务请求者来说,能够为其提供服务的提供者有很多,那么他将选择信任度高的提供者来为自己服务。然而,这种方式对于信任度高的服务提供者来说却有两点不利:
① 信任度越高的服务提供者,其提供服务所消耗的资源越多;
② 信任度高的服务提供者和信任度低的服务提供者在这种方式下会获得相同的利益。
因此,在一个实际应用系统中,需要对这一不利因素进行改进,例如,可以对多个服务提供者的OTD进行排名,然后设定OTD的阈值,挑选出比阈值高的所有服务提供者,从中随机选择一个作为目标,向其请求服务。这样就在一定程度上减轻了信誉高的域节点的负载。又如,除了服务提供者的OTD因素外,还可以考虑服务请求者在价格和风险方面的偏好等因素。
(3)面向FTP的动态资源访问控制
设有一个提供文件共享服务的站点P,为了保证网络系统的安全性,该FTP站点引入了信任评估机制,对所有的服务请求者节点进行信任度的评估,根据信任度的评估结果,对不同信任度的节点提供不同类别的服务质量。假设站点P可以提供3个等级的服务质量,设服务类别的等级用集合S表示,站点P的S可以定义为:S={s1, s2, s3,},其中s1表示拒绝服务,s2表示只读,s3表示既可以读也可以写。则可以定义如下的服务决策函数:
设节点P通过本书的计算方法得到某实体Pj的总体信任度为Γ(P,Pj)=0.19,则根据决策函数Ψ可得决策过程为Ψ(Γ(P,Pj))=Ψ(0.19)=s1,这说明节点Pj的信任级别较低,站点P将拒绝为Pj提供服务。若Γ(P,Pj)=0.40,则Ψ(Γ(P,Pj))=Ψ(0.40)=s2,表示节点Pj可以读节点P的资源。若Γ(Pi,Pj)=0.90,则Ψ(Γ(P,Pj))=Ψ(0.90)=s3,表示节点Pj既可以读节点P的资源,也可以将数据保存(上传)到P的存储器中。