一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种针对ARM架构的基于安全属性的访问控制形式化验证方法

2022-06-11 14:10:47 来源:中国专利 TAG:

一种针对arm架构的基于安全属性的访问控制形式化验证方法
技术领域
1.本发明涉及智能设备访问控制安全领域,具体涉及一种针对arm架构的基于安全属性的访问控制形式化验证方法。


背景技术:

2.随着物联网、边缘计算技术的迅猛发展,使用arm、risc-v等精简指令集的处理器正在变得流行。这些处理器利用有限的资源,尽可能为智能终端、边缘节点等提供充足的计算资源。然而,智能设备的广泛使用也凸显了它们在安全方面上的不足,于是,智能设备的安全性逐步成为了工业和学术界的研究热点。智能设备目前采用了各种各样的访问控制机制来抵御攻击,如依赖于软件硬件协同设计的可信执行环境(tee),它用于提供强大的隔离机制,被广泛用于这些场景中以承载一些安全功能。然而,目前的访问控制机制经常存在缺陷,在智能设备所面临的各种威胁中,利用其访问控制机制的缺陷所发起的攻击越来越多。近年来,许多学者提出了增强tee资源安全保护的解决方案,包括优化隔离粒度以减少攻击面,构建加密模块,以及执行运行时检查以增加攻击难度,但这些解决方案中实现的安全机制往往既不灵活,也不能实现细粒度控制,缺乏严格的安全保障。因此,隔离域之间的安全边界很容易被打破。确保软硬件功能正确性的一种方法是使用形式化方法,这种方法已经逐渐应用于tee。但是,现有的工作常常只保证ta(可信应用程序)的安全属性,也难以提供调度程序接口。
3.arm架构的内存访问机制也存在缺陷,armv8架构采用的访问控制机制大致如下:该架构使用pxn和uxn分别控制特权模式、用户模式对内存的执行权限。对于读写权限,使用pstate.pan位控制特权模式访问任何属于用户模式的内存,使用页表项中的ap[2:1]属性位来控制内存区域的读写权限。但由于ap两位不足以描述特权模式以及用户模式的内存读写权限的16种组合,该机制存在两个缺陷:一方面,不能单独描述读取、写入权限;另一方面,特权模式与用户模式下的内存访问权限存在较大的相关性,不能独立控制它们的内存访问权限。


技术实现要素:

[0004]
本发明公开一种针对arm架构的基于安全属性的访问控制形式化验证方法。该方法对系统中的实体进行抽象,为其赋予安全属性,以实现灵活、细粒度的系统资源管理,增强了arm架构的资源安全保护,在此基础上,将本发明提出的访问控制策略应用在arm处理器中,增强arm架构的内存隔离保护。具体技术方案如下:
[0005]
一种针对arm架构的基于安全属性的访问控制形式化验证方法,该方法步骤如下:
[0006]
步骤一:定义系统资源的原子安全属性,并基于这些原子安全属性,为系统中的实体指定安全属性,包括主体属性、客体属性、用户属性和资源属性;
[0007]
步骤二:定义访问控制策略,访问控制策略以主体属性、客体属性和访问属性配置
为输入,为可信执行环境和非可信执行环境中产生的资源访问请求做出是否允许访问的判断;
[0008]
步骤三:对安全属性和访问控制策略进行形式化描述与验证,以确保访问控制机制满足机密性与完整性要求;
[0009]
步骤四:对arm架构的内存访问控制机制进行修改,以解决arm内存访问控制机制存在的缺陷。
[0010]
进一步地,所述步骤一中的原子安全属性所描述的是系统资源最为基础的属性,包括身份、类型、地址、权限,用于对系统资源进行细粒度划分。
[0011]
进一步地,所述步骤一中的安全属性所描述的是系统中实体的固有属性,描述了实体的系统身份标识、所拥有资源的属性以及与其他实体的关系。
[0012]
进一步地,所述的步骤一中的安全属性以原子安全属性为基础,主体属性是主体指系统中的资源访问者、客体属性是客体指系统中的被访问资源,用户属性和资源属性都是主体属性和客体属性的组成部分。
[0013]
进一步地,所述步骤二中的资源访问请求是指资源访问者请求对系统中的资源进行读取、写入或者执行操作,判断是指是否允许该操作。
[0014]
进一步地,所述步骤二中的访问属性配置设置了一个资源的所有访问属性,所述的访问属性由包括读取、写入、执行的访问操作,以及包括用户模式、特权模式的特权级别构成,所述的访问属性配置和主体属性、客体属性共同作为访问控制策略的输入。
[0015]
进一步地,所述步骤四中的arm内存访问控制机制存在的缺陷是指其不足以描述特权模式与用户模式对某一内存空间的读写权限的16种组合,不能独立控制两者各自的内存读取、写入权限。
[0016]
进一步地,所述步骤四中对arm架构的内存访问机制所进行的修改,是指保持页表描述符的执行权限控制位不变,选取页表描述符中预留位中的4个位来控制特权模式和用户模式的读取和写入权限,对特权模式与用户模式的内存读写权限进行细粒度描述。
[0017]
本发明的有益效果如下:
[0018]
本发明公开一种针对arm架构的基于安全属性的访问控制形式化验证方法。该方法对系统中的实体进行抽象,为其赋予安全属性,以实现灵活、细粒度的系统资源管理,增强了arm架构的资源安全保护。首先,定义系统资源的原子安全属性,并基于这些原子安全属性,为系统中的实体指定安全属性,为系统资源定义的原子安全属性有助于细粒度地划分系统资源,进而为其提供细粒度保护;其次,定义访问控制策略,访问控制策略为可信执行环境和非可信执行环境中产生的资源访问请求做出是否允许访问的判断,它以主体属性、客体属性和访问属性配置为输入,而不是原子安全属性,这可以简化访问控制策略的判定逻辑;然后,对安全属性和访问控制策略进行形式化描述与验证,以确保访问控制机制满足机密性与完整性要求;最后,将本发明提出的访问控制策略应用在arm处理器中,选取arm架构页表描述符中预留位中的4个位来控制特权模式和用户模式的读取和写入权限,其效果是,可以实现对特权模式与用户模式的内存读写权限的细粒度描述,增强arm架构的内存隔离保护。实验证明了本方案设计的访问控制机制的有效性及其较低的性能开销。
附图说明
[0019]
图1是本发明提出的建模方法所形成的访问机制模型示意图;
[0020]
图2是本发明中系统资源的原子安全属性、安全属性结构示意图;
[0021]
图3是在qemu仿真的armv8环境下,memcached get方法的内存访问性能开销对比图;
[0022]
图4是在qemu仿真的armv8环境下,memcached set方法的内存访问性能开销对比图。
具体实施方式
[0023]
下面根据附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0024]
图1是本发明提出的建模方法所形成的访问机制模型示意图;本发明首先提出一种针对arm架构的基于安全属性的访问控制形式化验证方法,其关键在于定义系统资源的原子安全属性,并在此基础上形成安全属性,然后设计根据安全属性进行访问判决的访问控制策略,最后使用形式化方法验证模型是否满足机密性、完整性要求。如图1所示,安全属性基于物理资源抽象指定实体的特征,包括用户属性(指定用户的标识和属性)、资源属性(指定系统资源的标识和属性)、主体属性(资源访问者的标识和属性)和客体属性(被访问资源的标识和属性),其中主体属性和客体属性都由用户属性和资源属性组成,而配置属性指定访问操作属性。以这些属性为参数,访问控制策略为上层的非可信执行环境和可信执行环境提供资源访问接口并决定是否允许访问。
[0025]
步骤一:定义原子安全属性
[0026]
图2是本发明中系统资源的原子安全属性、安全属性结构示意图,其中,原子安全属性由矩形表示,而以原子安全属性为基础的安全属性由圆角矩形表示。原子安全属性描述的是资源的最基本属性,如身份、类型、位置、权限等。系统身份标识是本发明中定义的所有资源的标识符,以区分不同的资源。使用“标签”来指定系统中资源的属性,它由所属分区和特权级别组成。所属分区包括系统身份标识和位置,前者代表了这块资源的标识,后者描述了分区资源所在的位置,可以是tee(可信执行环境)或ree(非可信执行环境)。特权级别描述的是资源属于哪一个特权等级,包括异常级别0、异常级别1或异常级别2,分别代表用户应用程序、操作系统内核和特权软件。资源属性中的“标签”描述的是该资源所在域的属性,资源类型和信息类型分别表示资源和信息的类型。“访问操作”指定了具体的资源访问操作,包括读、写、执行。
[0027]
步骤二:定义安全属性,并验证安全属性的有效性
[0028]
系统中的实体根据原子安全属性形成安全属性。如图2所示,在模块“用户属性”中定义的用户属性包括系统身份标识和标签来指定用户的身份和标签属性。主体属性和客体属性都与用户属性绑定。主体属性包括用户属性(即资源访问者属性)、主体的系统身份标识和资源属性,而资源属性则描述了主体所拥有的资源本身的特征。类似地,客体属性也包括系统身份标识、用户属性和资源属性,这里的用户属性描述客体资源的使用者或者拥有者的属性。为了指定某块资源的访问属性,“访问属性”结合特权级别和访问操作来描述特定特权级别的访问请求和访问操作。在此基础上,“访问属性配置”配置了一个资源的所有
访问属性,它与主体属性和客体属性一同作为访问控制策略的输入。
[0029]
安全属性的有效性需要经过验证,在本实施例中,使用valid函数进行验证。valid函数根据是否需要使用递归,可以选取两种定义方式:function和definition中的一种。valid函数保证输入属性的所有元素都被正确定义,它能够递归检验所有的子属性。valid函数示例如下:
[0030][0031][0032]
函数valid_objattr给出对象属性的有效性定义。该函数将对象属性作为输入参数,当且仅当属性不为空(即noobjattr)且对象的标识属性(objattr)、用户属性(objattr_user)、自身的资源属性(objattr_resrcattr)都有效时,该属性才有都是有效的。这些函数封装在相应的模块中,并提供接口以减少耦合。也就是说,每个模块对其他模块都是透明的。当一个模块被修改时,其他模块仍然可以继续调用这些接口。
[0033]
步骤三:形成访问控制策略
[0034]
访问控制策略以主体属性、客体属性和访问属性配置作为输入参数。这些策略会考虑主客体资源的所属分区和特权级别来进行逻辑判断。一般情况下,访问操作分为读、写和执行,而特权级别分为用户模式和特权模式。因此,访问控制策略涵盖了6种场景:用户模式可读(ur)、特权模式可读(pr)、用户模式可写(uw)、特权模式可写(pw)、用户模式可执行(ux)、特权模式可执行(px)。这些策略都使用访问属性配置、主体属性和客体属性作为参数。下面以用户模式可读、特权模式可读为例。
[0035]
用户模式可读的定义:
[0036][0037][0038]
sa.caller=oa user∧
[0039]
el=oa.privilege∧el=el0∧
[0040]
sa.tag=oa.tag∧(read,el)∈acf
[0041]
通过符号来表示访问操作满足约束条件,ur表示用户模式的读操作。当请求读操作的主体处于用户态时,首先调用上述valid函数来判断这些属性的有效性,validacf、valid sa、validoa指的是acf(访问属性配置)、sa(主体属性)、oa(客体属性)的有效性。其次,要判断主体的调用者(sa.caller)是否是客体资源的使用者(oa user)。由于用户态的主体本质上只能访问用户态的客体,所以客体的权限级别(el)必须为el0。此外,主体和客体具有相同的标签(tag)来表明它们具有相同的所属分区和特权级别。最后,该策
略判断在访问属性配置中,是否已经分配了用户态的读操作权限,也就是(read,el)是否在acf中。
[0042]
特权模式可读的定义:
[0043][0044][0045]
sa.caller=oa.user∧
[0046]
elo=oa.privilege∧els=sa.privilege∧
[0047]
(els=el1∨els=el2)∧
[0048]
((elo=el0∧sa.partition=oa.partition∧
[0049]
(read,els)∈acf∧pnu=0)∨
[0050]
(elo≠el0∧sa.tag=oa.tag∧(read,els)∈acf))
[0051]
与用户模式可读类似,表示主体在特权模式下满足对客体资源执行读取操作的约束条件。elo和els分别是客体和主体资源所属的特权级别。除了验证这些输入属性的有效性(validacf、valid sa、validoa)以及主客体的绑定关系(sa.caller=oa.user)之外,该策略在两种情况下进行逻辑判断:1)当客体处于用户模式时,必须判断主客体是否在同一个分区中(sa.partition=oa.partition),并且在访问属性配置(acf)中已经授予特权模式下的读操作权限,且特权模式被允许访问用户模式的资源(pnu=0);2)当客体不在用户模式下,主客体具有相同的标签(tag),且在访问属性配置中已赋予特权模式下的读操作权限(read,els)。
[0052]
步骤四:验证模型是否满足机密性、完整性要求
[0053]
参考biba模型来定义完整性,即禁止数据从低安全级别实体流向高安全级别实体。机密性则是参照blp模型定义的,即禁止敏感数据从高安全级别实体流向低安全级别实体。这些安全级别通过安全属性导出。
[0054]
完整性形式化描述如下:
[0055]
theorem.(integrity ofreal).
[0056][0057][0058]
完整性被表示为由于读写操作会影响主体和客体之间的数据流动,因此该定理证明了访问控制策略中的任何读写操作都满足完整性要求。在特权模式下执行这些操作(或)时,pnu应该等于1,即特权模式不能对用户模式资源进行操作。
[0059]
机密性形式化描述如下:
[0060]
theorem.(confidentiality ofreal).
[0061][0062]
机密性被表示为机密性确保了访问控制策略中的读写操作都禁止数据从高特权级别流向低特权级别。机密性的验证方式与验证完整性所采用的方式相同。通过证明访问控制机制满足机密性和完整性,可以确保访问控制机制能够保护系统资源的安全。
[0063]
本发明根据上述步骤提出的访问控制形式化验证方法,对arm架构的内存访问机制进行了修改,在qemu模拟的armv8环境中验证了新机制的效果。其关键在于,如何在arm页表描述符中设计合适的标签位,并根据定义的标签位形成访问控制策略,以使特权模式与用户模式对内存的访问权限能够灵活、细粒度地被赋予或更新,从而避免旧机制的缺陷。
[0064]
步骤一:分析arm架构现有的内存访问控制机制
[0065]
arm架构使用pxn和uxn分别控制特权模式、用户模式对内存的执行权限。对于读写权限,使用pstate.pan位控制特权模式访问任何属于用户模式的内存,使用页表项中的ap属性位来控制内存区域的读写权限。
[0066]
arm架构的ap属性位定义如表1所示:
[0067]
表1 arm架构的ap属性位定义
[0068][0069][0070]
由于ap两位不足以描述特权模式与用户模式的内存读写权限的16种组合,该机制存在两个缺陷:一方面,不能单独描述读取、写入权限;另一方面,特权模式与用户模式下的内存访问权限存在较大的相关性,不能独立控制它们的内存访问权限。
[0071]
步骤二:新增prn、pwn、urn和uwn属性位
[0072]
选取arm的页表描述符中预留的4位,定义为prn、pwn、urn和uwn,它们的含义如表2所示:
[0073]
表2 prn,pwn,urn,uwn的定义
[0074][0075]
新增的prn、urn、pwn和uwn和arm原有的pxn、uxn控制着内存页面的读取、写入和执行权限。本方案的访问控制机制比pan机制粒度更细,因为pan开启时,禁止特权模式访问所有属于用户模式的内存;而本方案的访问控制机制是基于页面的,可以控制特权模式与用户模式对单一页面的访问权限。另外,本方案的访问控制机制使用足够的位数来描述读写权限,弥补了ap属性位的不足,提升了安全性。
[0076]
步骤三:修改页面访问属性所对应的页表描述符位状态
[0077]
页面访问属性对应着不同的页表描述符位状态,当页面的访问权限发生变化时,需要改变该页面所对应的页表描述符中的相关位。由于本方案的机制在页表描述符中定义了4个新的属性位,即prn,pwn,urn,uwn,这些新定义的位需要根据页面访问属性的具体读写权限要求进行对应的设置,比如,“页面不可被读、写、执行”这一页面访问属性阻止了对该页面的读取和写入,因此所对应的prn,pwn,urn,uwn应当都置为1。
[0078]
步骤四:更改mmu内存访问控制机制
[0079]
当特权模式或用户模式访问某个内存区域时,mmu(内存管理单元)依据该内存区域的页表描述符中的权限控制位判断是否允许本次内存访问。在arm原有的机制中,使用ap[2:1]与pstate.pan的状态来判定是否允许内存的读取或写入,而本方案则在qemu模拟的arm环境下,将模拟实现的arm mmu修改为根据页表描述符中新增的prn、pwn、urn和uwn这4个属性位来进行判断,弥补了原有机制的缺陷。
[0080]
步骤五:测试新机制下arm内存访问性能开销
[0081]
在qemu模拟的arm环境下修改内存访问控制机制后,使用memcached应用来测试新机制在实际场景下的内存访问性能开销。memcached使用内存来缓存数据库查询结果,以提高数据库访问效率。本方法分别使用memcached的get和set方法,在不同的数据尺寸下测试了新机制对内存访问性能的影响。图3是在qemu仿真的armv8环境下,memcached get方法的内存访问性能开销对比图,而图4是memcached set方法的内存访问性能开销对比图,这两幅图中,横轴表示的是单次访问涉及到的数据尺寸,左侧的纵轴数值对应着曲线所表示的新机制与旧机制相比的开销,而右侧的纵轴数值表示的是吞吐量。图中竖线的两端分别是旧机制和新机制的吞吐量,用实心块表示新机制性能开销大于旧机制,空心块则代表新机制性能开销小于旧机制。测试结果表明,修改后的新机制相较于旧的机制,并没有显著增加内存访问性能开销。
[0082]
本领域普通技术人员可以理解,以上所述仅为发明的单个实例,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发
明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献