第二章、安全存储与访问控制技术
2.1 早期访问控制技术
2.1.1 基本概念
2.1.2 访问控制模型
(1)自主访问控制模型
(2)强访问控制模型
(3)基于角色的访问控制模型
(4)基于属性的访问控制模型
2.1.3 局限性总结
2.2 基于数据分析的访问控制技术
2.3 基于密码学的访问控制技术
在数据资产的存储和分享过程中,人们希望确保数据只能被经过授权的的用户访问和使用,这就是信息安全领域中典型的访问控制问题。
2.1 早期访问控制技术
早期的访问控制结束都是建立在可信引用监控机基础上的。引用监控机是Anderson在1972年引入的的抽象概念,能够对系统中的主体和客体之间的授权访问关系进行监控。在数据存储系统中存在一个所有用户都信任的引用监控机时,就可以用来执行各种访问控制策略,实现客体资源的受控共享。
访问控制策略是对系统中用户访问资源行为的安全约束需求的具体描述。为了便于表达和实施,这些策略在计算机中会被对应地归纳和实现为各种访问控制模型。本节主要对自主访问控制、强制访问控制、基于角色的访问控制、基于属性的访问控制等模型的基本概念和原理进行简要介绍。
2.1.1 基本概念
本节介绍的访问控制技术都涉及如下的概念:
主体:能够发起对资源的访问请求的主动实体,通常为系统的用户或进程。
客体:能够被操作的实体,通常是各类系统和数据资源。
操作:主体对客体的读、写等动作行为。
访问权限:客体及对其的操作形成的二元组<操作,客体>。
访问控制策略:对系统中主体访问客体的约束需求描述。
访问(引用)授权:访问控制系统按照访问控制策略进行访问权限的赋予。
引用监控机(Reference Monitor,RM):指系统中监控主体和客体之间授权访问关系的部件。下图中访问控制信息库记录了访问控制系统对RM进行授权的信息,而RM则基于这些授权信息来约束主体对客体资源的访问行为。
引用验证机制(Reference Validation Mechanism,RVM):是RM的软硬件实现。引用验证机制RVM则是真实系统中访问控制能够被可信实施的基础。它必须满足如下三个属性:
(1)具有自我保护能力:确保安全性,能够抵抗攻击;
(2)总是处于活跃状态:所有访问行为都受到监控,RVM不能被绕过;
(3)必须设计得足够小,以便于分析和测试。
2.1.2 访问控制模型
(1)自主访问控制模型
自主访问控制的思想是客体的属主决定主体对客体的访问控制。但存在明显缺点,授权完全由用户来自主决定,系统无法分辨授权行为是来源于合法用户还是恶意代码。
自主访问控制模型可以被表述为 ( S , O , A ) (S,O,A) ( S , O , A ) 三元组。其中, S S S 表示主体集合, O O O 表示客体集合,且 S ⊂ O S \subset O S ⊂ O 。 A A A 表示访问矩阵, A ( s i , o j ) A(s_i,o_j) A ( s i , o j ) 则表示主体 s i s_i s i 能够对客体 o j o_j o j 执行的操作权限。自主访问控制模型的实施由RM根据访问矩阵 A A A 进行判定,数据属主对权限的管理通过修改访问矩阵来完成。 自主访问控制的两种实现形式:
能力表(Capabilities List,CL),即基于主体的自主访问控制实现。该表记录了每一个主体与一个权限集合的对应关系。权限集合中每个权限被表示为一个客体以及其上允许的操作集合的二元组。
访问控制列表(Access Control List,ACL),即基于客体的自主访问控制实现。该表记录了每一个客体与一个权限集合的对应关系。权限集合中的每个权限被表示为一个主体以及其能够进行的操作集合的二元组。
在大数据环境下,无论哪种实现方式,自主访问控制模型都将面临权限管理复杂度爆炸式增长的问题。因此,直接采用自主访问控制模型是非常困难的。
(2)强访问控制模型
安全管理员为系统中每个主客体分配安全标记,然后依据主客体安全标记之间的支配关系来进行访问控制。由于安全标记之间的支配关系是满足偏序性质的,可以形成格结构,如下图所示。因此,强制访问控制模型又可称为基于格的访问控制模型。其中最为经典的是BLP和Biba模型。 1)BLP模型 BLP模型被用于保护系统的机密性,防止信息的未授权泄漏。主要涉及如下概念:
安全级别Level:公开(UC)、秘密(S)、机密(C)、绝密(TS)。它们之间的关系为UC≤S≤C≤TS。
范畴Category:为一个类别信息构成的集合,例如{中国,军事,科技}。具有该范畴的主体能够访问那些以该范畴子集为范畴的客体。
安全标记Label:由安全级别和范畴构成的二元组<Level,Category>,例如<C,{中国,科技}>。
支配关系dom:安全标记 A A A dom B B B ,当且仅当 L e v e l A ≥ L e v e l B Level_A ≥ Level_B L e v e l A ≥ L e v e l B , C a t e g o r y A ⊇ C a t e g o r y B Category_A ⊇ Category_B C a t e g o r y A ⊇ C a t e g o r y B 。
BLP模型在为系统中每个保护范围内的主客体都分配了安全标记后,主体对客体的访问行为应满足如下两条安全属性:
简单安全属性:主体 S S S 可以读客体 O O O ,当且仅当 L a b e l S Label_S L a b e l S dom L a b e l O Label_O L a b e l O ,且 S S S 对 O O O 有自主型读访问权限。
*安全属性:主体 S S S 可以写客体 O O O ,当且仅当 L a b e l O Label_O L a b e l O dom L a b e l S Label_S L a b e l S ,且 S S S 对 O O O 具有自主型写权限。
从信息流角度看,上述两条读/写操作所应遵循的安全属性阻止了信息从高安全级别流入低安全级别,且使得信息“仅被需要知悉的人所知悉”,因此,能够有效地确保数据的机密性。
2)BLP模型 Biba模型是第一个关注完整性的访问控制模型,用于防止用户或应用程序等主体未授权地修改重要的数据或程序等客体。涉及以下概念:
完整性级别Level:代表了主/客体的可信度。完整性级别高的主体比完整性级别低的主体在行为上具有更高的可靠性;完整性级别高的客体比完整性级别低的客体所承载的信息更加精确和可靠。
范畴Category:若范畴 C a t e g o r y A ⊇ C a t e g o r y B Category_A ⊇ Category_B C a t e g o r y A ⊇ C a t e g o r y B ,则A能写入B;否则,A不能写入B。
完整性标记Label:由完整性级别和范畴构成的二元组<Level,Category>。
支配关系dom:完整性标记 A A A dom B B B ,当且仅当 L e v e l A ≥ L e v e l B Level_A ≥ Level_B L e v e l A ≥ L e v e l B , C a t e g o r y A ⊇ C a t e g o r y B Category_A ⊇ Category_B C a t e g o r y A ⊇ C a t e g o r y B 。
Biba模型的严格完整性策略是BLP模型的对偶。它应满足如下安全属性:
完整性特性:主体 S S S 能够写入客体 O O O ,当且仅当 L a b e l S Label_S L a b e l S dom L a b e l O Label_O L a b e l O 。
调用特性:主体 S 1 S_1 S 1 能够调用主体 S 2 S_2 S 2 ,当且仅当 L a b e l S 1 Label_{S1} L a b e l S 1 dom L a b e l S 2 Label_{S2} L a b e l S 2 。
简单完整性条件:主体 S S S 能够读取客体 O O O ,当且仅当 L a b e l O Label_O L a b e l O dom L a b e l S Label_S L a b e l S 。
基于上述三条安全属性,信息只能从高完整性级别的主客体流向低完整性级别的主客体,从而有效避免了低完整性级别的主客体对高安全级别主客体的完整性的“污染”。
在大数据场景下,由安全管理员来进行强制访问控制的授权管理是具有挑战性的:
随着主客体规模的急剧增长,安全标记的定义和管理将变得非常繁琐;
来自多个应用的用户主体和数据客体也将使得安全标记难以统一。
(3)基于角色的访问控制模型
标准RBAC模型包括了RBAC0~3四个模型。 1.RBAC0模型(Core RBAC),定义了用户、角色、会话和访问权限等要素。 基本元素包括:
用户是访问控制的主体,可以发起访问操作请求。
对象是访问控制的客体,指系统中受访问控制机制保护的资源。
操作是指对象上能够被执行的一组访问操作。
权限是指对象及其上指定的一组操作。
角色是权限分配的载体,是一组有意义的权限集合。
会话用于维护用户和角色之间的动态映射关系。
元素之间的关系为:
UA用户分配:用户和角色之间是多对多的映射关系,记录了管理员为用户分配的所有角色。
PA特权分配:角色与权限之间也是多对多的映射关系,记录了管理员为角色分配的所有权限。
user_sessions:用户与会话之间的一对多映射关系。即一个用户可通过登录操作开启一个或多个会话,而每个会话只对应一个用户。
session_roles:会话与角色之间的多对多关系。即用户可以在一个会话中激活多个角色,而一个角色也可以在多个会话中被激活。
2.RBAC1(Hierarchal RBAC)在RBAC0的基础上引入了角色继承的操作。角色继承,就拥有了被继承者的所有权限。 3.RBAC2(Constraint RBAC)引入了职责分离的概念,用以调节角色之间的权限冲突。 4.RBAC3(Combines RBAC)是RBAC1和RBAC2的综合,探讨了角色继承和约束之间的关系。
RBAC已经比较成熟,在商用领域里得到广泛应用。与强制访问控制一样,需要安全管理员进行权限管理。
(4)基于属性的访问控制模型
基于属性的访问控制模型(ABAC)通过安全属性来定义授权,并实施访问控制。由于安全属性可以由不同的属性权威分别定义和维护,所以具备较高的动态性和分散性,能够较好地适应开放式的环境。具体地,它包括如下几个重要概念:
实体:系统中存在的主体、客体,以及权限和环境。
环境:指访问控制发生时的系统环境。
属性:用于描述上述实体的安全相关信息。它通常由属性名和属性值构成,又可分为以下几类:
主/客体属性:主体姓名、性别、年龄等;客体创建时间、大小等;
权限属性:描述业务操作性质的创建、读、写等;
环境属性:时间、日期、系统状态。
ABAC的框架如下:
AA为属性权威,负责实体属性的创建和管理,并提供属性的查询。
PAP为策略管理点,负责访问控制策略的创建和管理,并提供策略的查询。
PEP为策略执行点,负责处理原始访问请求,查询AA中的属性信息生成基于属性的访问请求,并将其发送给PDP进行判定,然后根据PDP的判定结果实施访问控制。
PDP为策略判定点,负责根据PAP中的策略集对基于属性的访问请求进行判定,并将判定结果返回PEP。
ABAC较为适合大数据的开放式数据共享环境。然而属性的管理和标记对于安全管理员来说仍然是劳动密集型工作,且需要一定的专业领域知识。在大数据场景下,数据规模和应用复杂度使得这一问题更加严重。
2.1.3 局限性总结
早期访问控制模型和技术在大数据应用场景下主要存在三方面问题:
2.2 基于数据分析的访问控制技术
见博文“《大数据安全与隐私保护》读书笔记——2.安全存储与访问控制技术(二)”
2.3 基于密码学的访问控制技术
见博文“《大数据安全与隐私保护》读书笔记——2.安全存储与访问控制技术(三)”