老哥学习网 - www.lg9.cn 2024年05月10日 20:14 星期五
当前位置 首页 >心情日记 >

[操作系统内核的动态可信度量模型]

发布时间:2019-01-17 19:44:10 浏览数:

  摘要:动态可信度量是可信计算的研究热点和难点,针对由操作系统内核动态性所引起的可信度量困难问题,提出一种操作系统内核的动态可信度量模型,使用动态度量变量描述和构建系统动态数据对象及其关系,对内核内存进行实时数据采集,采用语义约束描述内核动态数据的动态完整性,通过语义约束检查验证内核动态数据是否维持其动态完整性。给出了模型的动态度量性质分析与证明,模型能够有效地对操作系统内核的动态数据进行可信度量,识别对内核动态数据的非法篡改。
  
  关键词:可信计算;可信度量;动态度量;操作系统内核;远程证明
  
  中图分类号: TP309 文献标志码:A
  
  Dynamic trusted measurement model of operating system kernel
  XIN Si.yuan1*, ZHAO Yong2, LIAO Jian.hua3, WANG Ting4
  
  1.Institute of Electronic Technology, Information Engineering University, Zhengzhou Henan 450004,China;
  
  2.College of Computer Science,Beijing University of Technology,Beijing 100124,China;
  
  3.School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China;
  
  4. Unit 65047 of PLA,Shenyang Liaoning 100805,ChinaAbstract:
  Dynamic Trusted Measurement is a hot and difficult research topic in trusted computing. Aim at the measurement difficulty problem invoked by the dynamic nature of operating system kernel a Dynamic Trusted Kernel Measurement (DTKM) model is proposed, Dynamic Measurement Variable (DMV) is presented to describe and construct dynamic data objects and their relations, and the method of semantic constraint is proposed to measure the dynamic integrity of kernel components.In DTKM, the collection of memory data is implemented in real time, and the dynamic integrity is verified by checking whether the constructed DMV is consistent with semantic constraints which are defined based on the security semantic. Formal analysis and application examples show that DTKM can effectively implement dynamic measurement of the kernel and detect the illegal modification of the kernel dynamic data.
  
  Dynamic trusted measurement is a hot and difficult research topic in trusted computing. Concerning the measurement difficulty invoked by the dynamic nature of operating system kernel, a Dynamic Trusted Kernel Measurement (DTKM) model was proposed. Dynamic Measurement Variable (DMV) was presented to describe and construct dynamic data objects and their relations, and the method of semantic constraint was proposed to measure the dynamic integrity of kernel components. In DTKM, the collection of memory data was implemented in real.time, and the dynamic integrity was verified by checking whether the constructed DMV was consistent with semantic constraints which were defined based on the security semantics. The nature analysis and application examples show that DTKM can effectively implement dynamic measurement of the kernel and detect the illegal modification of the kernel dynamic data.
  
  Key words:
  trusted computing; trusted measurement; dynamic measurement; operating system kernel; remote attestation
  0引言
  可信度量是可信计算的关键技术,用于测量和评估系统预期描述和系统实际行为的符合程度,对于可信计算平台的信任链构建、远程证明起到重要的支撑作用。可信度量在一定的时间点对度量对象的状态信息进行采集,以检验度量对象的当前状态是否符合预期[1]。目前,可信计算平台中的可信度量大多采用静态完整性度量方法[2-5],在计算实体启动和控制权传递之前,使用杂凑算法计算度量对象静态文件的摘要值,与事先记录的基准值相比较,从而判定将要运行的实体是否符合预期。然而,当计算实体获得控制权并处于运行状态之后,其可信状态可能遭受动态的恶意篡改,破坏计算实体运行的可信性。操作系统内核作为计算平台硬件之上的第一层软件,运行于CPU的最高特权级,是可信计算平台的核心构件。由于操作系统内核动态性和复杂性,仅在操作系统启动之前度量硬盘中的静态镜像文件的静态摘要值是不够的,操作系统内核在运行过程中可能受到缓冲区溢出、直接内存存取(Direct Memory Access,DMA)外设攻击[6]等动态的攻击行为,使操作系统进入非预期的状态,此时再将静态的操作系统度量信息报告给远程平台会出现度量时与使用时状态的不一致问题[7],造成失效的远程证明。因此,操作系统内核的动态可信度量研究对构建可信计算环境、实现动态的远程证明具有重要意义。
  现有的操作系统动态度量研究中,Copilot系统[8]基于协处理器以DMA方式周期性地对正在运行的操作系统内核代码段、只读数据等部分进行动态度量。文献[1]的动态完整性度量框架对进程、内核模块的内存代码进行度量,但这两种方式还是基于杂凑函数对操作系统内核内存中的静态部分进行度量,无法度量在操作系统运行过程中动态变化的数据。文献[9]提出了程序控制流完整性的概念。文献[10]通过扫描分析操作系统内核的源码,对运行时的操作系统内核控制流进行监控,度量内核的控制流完整性,此方法依赖于系统源码,仅关注函数指针等控制数据,无法度量系统中非控制动态数据[11];操作系统内核上下文监控技术[12]提供了一种度量内核运行时上下文中重要数据结构的方法,通过分析内核中的重要数据结构,对动态数据中的函数指针以及其上下文环境进行记录,然而此方法并没有给出分析所采集到的上下文动态数据的方法,无法判断操作系统的状态是否符合预期。文献[13]通过基于软件的方法对嵌入式设备的内存进行度量,通过伪随机的方式对设备内存进行遍历和度量,这种方式侧重于通过精心的设计和构造保证度量模块受到篡改后能够被发现,它将设备的内存块作为一个整体进行度量,不能有效地对设备内存的动态部分进行度量。文献[14]和文献[15]采用内核执行保护的思想,分别用硬件虚拟技术和影子内存技术(Memory Shadowing)保证只有证明过的代码才能够在内核态执行,但依然只能证明和保护静态的内核代码部分,对于如何度量和证明动态的内核数据部分并未解决。现有的操作系统可信度量研究,能够对内核运行过程中内存的静态部分进行度量,读取和采集一定的内核动态数据,但不能描述内核动态部分的预期状态,无法对内核中动态变化的数据进行可信度量。
  第4期
  辛思远等:操作系统内核的动态可信度量模型计算机应用 第32卷
  
  针对由操作系统内核的动态性引起的可信度量困难问题,本文提出了一种操作系统内核的动态可信度量(Dynamic Trusted Kernel Measurement,DTKM)模型,对于加载到内存、处于运行状态的操作系统内核动态数据对象进行动态度量。给出了动态完整性的概念,通过语义约束来描述内核动态元素的动态完整性,采用构造度量变量的方法统一描述度量的对象和内容,对动态的内核内存进行数据采集,验证动态度量对象是否符合预期的语义约束,实现对处于运行状态的操作系统内核的可信动态度量。
  1模型组成
  在操作系统内核加载到内存中的各种组成元素中,内核的代码段、只读数据段、系统调用表、中断描述符表、全局描述符表等元素在操作系统运行过程中是静态不变的,仍然可以使用杂凑函数进行实时的度量,而内核初始化数据段、未初始化数据段、内核页表、进程链表等数据动态变化,需要进行动态的可信度量。操作系统内核的动态元素大多都是一些动态的数据内容,这些数据会随着操作系统的运行而动态变化,而数据结构是数据存在的主要形式,研究内核的重要数据结构对象在动态变化中的变化轮廓和相互关系,表达和度量内核动态数据中的安全不变式,是内核动态度量研究的一个有效的切入点。基于上述思想,本文给出一种操作系统内核的动态可信度量模型,针对运行时操作系统内核的动态数据对象进行动态可信度量。
  模型的基本前提假设是:1)操作系统内核的关键数据结构定义是已知的;2)内核关键数据结构对象在内核空间中的起始地址是已知的。这两个假设在现实中是可行的,数据结构定义可以从操作系统内核头文件中获取,数据对象可以从内核符号映射表中获取,如Linux系统的system.map文件。
  下面给出模型的基本符号:
  
  O={o1,o2,…,on}表示操作系统内核的静态元素集,在操作系统运行过程中固定不变;
  D={d1,d2,…,dn}表示操作系统内核的动态元素集,在操作系统运行过程中动态变化;
  T={t1,t2,…,tn}表示时间集合。
  定义1信息资源未受任何授权修改和非法篡改而保持自身的完整属性称为静态完整性,SIntg(o,t)=true表示对象o的静态完整性在时刻t没有遭到破坏。
  定义2信息资源经过正常的授权修改、未经任何非法篡改而保持自身的安全语义完整属性称为动态完整性,DIntg(d,t)=true表示对象d的动态完整性在时刻t没有遭到破坏。
  定义3可信度量由一个四元组构成,M=〈e,o,f,t〉,e为进行度量行为的度量实体,o∈O∪D为度量的对象,f为度量方法,t∈T为度量时间。
  定义4 度量函数f:K×T→R, f(o,t)=r 表示在时间t对元素o采用度量函数f进行度量,得到度量结果r, 令h为静态度量函数(即为杂凑函数)。
  性质1�t1,t2∈T,o∈O,SIntg(o,t1)=SIntg(o,t2)=true→h(o,t1)=h(o,t2)
  杂凑函数是最为常用的数据完整性检测方法,性质1说明当度量对象没有受到篡改时,杂凑函数的度量结果保持不变。
  性质2�t1,t2∈T,o∈O,SIntg(o,t1)≠SIntg(o,t2)→h(o,t1)≠h(o,t2)
  杂凑函数的无碰撞性保证当度量对象受到篡改后杂凑函数必然输出不同的度量结果。杂凑函数的性质1和2保证其可以用来度量静态元素集O中的元素,能够有效地区分静态元素的可信与非可信状态。下面利用杂溱函数,通过构造静态度量变量组织和实施系统中的静态元素的完整性度量。
  定义5静态度量变量u由一个四元组构成u=〈name,p,sz,ct〉,name表示变量的名称,p表示起始地址,sz表示度量变量的大小,ct∈{0,1}*为度量到的内存内容,静态度量变量的集合为U,静态度量变量用于描述内核的静态元素集O。
  度量变量的执行函数instruct:u∈U×T→u′,依据度量变量u的起始地址和大小,在时刻t∈T采集内存内容,u′指u经过一次数据更新后的状态。
  静态变量度量函数s_measure:U×T→{0,1}128, 令s_measure(u,t)=h(instruct(u,t).ct),即在时刻t∈T对度量变量的内容进行采集,并计算其HASH值。
  性质3�t1,t2∈T,d∈D,DIntg(d,t1)=DIntg(d,t2)=true→h(d,t1)≠h(d,t2)
  而对于动态元素集D中的元素,由于正常情况下实体本身也是变化的,因此如果其完整性遭受非法篡改,使用杂凑函数是无法区分实体的正常变化和非法篡改,需要采用其他方法对动态元素进行度量,以区分出正常变化和非法篡改。
  用以度量动态完整性的动态度量函数是可信度量研究中的一个难点,动态度量函数既要能够发现安全相关的动态元素的非法篡改,也能够辨别动态元素的正常动态变化,以保证度量结果的正确性,为信任决策提供依据。下面基于分析内核动态数据对象的语义约束的思想,给出动态度量变量的定义。
  定义6一个动态度量变量v由一个五元组构成, v=〈TP,P,S={S1,S2,…,Sn},R={R1,R2,…,Rm},I〉,动态度量的集合用V表示。动态度量变量用于描述内核动态元素,其中:TP为数据类型集合,由安全语义相关的数据结构类型构成;P数据类型度量点集合,即为数据结构在内存中的起始地址;Si为数据对象的集合;Rt为二元关系Rt�Si×Sj;I为Si和Rt的构建规则集;I中构建规则的语法为:
  
  I的一条规则Q,L�IN表示对于量词Q描述的数据对象,当条件L成立时,执行集合的更新操作IN。
  一个动态度量变量不仅描述了一个度量对象的数据类型、度量地址,还明确了所描述的数据对象集和关系集的采集方法。通过对动态度量变量的度量,能够从度量点获取原始数据,并依赖于数据类型和集合构建规则构建出数据对象集合及其关系,为描述和检验动态数据的安全语义提供了数据基础。
  定义7动态度量变量相关函数:
  度量变量与动态元素映射des:D→V,表示动态元素d∈D由度量变量v∈V描述;
  对象集类型函数type:S→TP, 数据对象集的数据类型;
  构建规则目标函数object:I→S∪R,表示一条构建规则所构建的集合;
  规则执行函数exec:i∈I×P×TP→object(i)′,表示从度量点p∈P依据数据类型tp∈TP开始执行规则i后,object(i)被成功更新为object(i)′;
  度量变量的执行函数 instruct:v∈V×T→v′,依据度量变量中的构建规则在时刻t∈T对度量变量中的数据对象和关系进行信息采集,instruct(v, t)成功后,v中的数据对象集合和关系集合构建成功,v′表示更新数据后的度量变量。下面给出instruct(v, t)的执行算法。
  
  4结语
  操作系统内核是可信计算平台中的重要组件,由于其运行的复杂性和动态性,除了在启动前度量其在硬盘中的映像文件外,还需要在操作系统运行过程对其进行动态的可信度量。本文提出了一种操作系统内核的动态度量模型――DTKM,对于内存中的操作系统内核静态元素和动态元素进行实时的动态度量。针对内核动态元素的动态度量困难问题,提出采用语义约束描述内核动态数据的语义完整性,通过构造度量变量组织和实施内核各部分的动态度量,采集内核内存动态数据并构造数据对象集合和关系集合,检验动态度量变量是否满足安全语义约束,以实现操作系统内核的动态完整性度量。

推荐访问:度量 内核 可信 模型

相关文章:

Top