基于进程行为的平台完整性状态信息度量方法转让专利

申请号 : CN201810118751.1

文献号 : CN108399338B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 庄毅易平顾晶晶汪自旺

申请人 : 南京航空航天大学

摘要 :

本发明公开了一种基于进程行为的平台完整性状态信息度量方法,包括以下步骤:步骤1,截获应用层的度量请求,并从应用程序中提取度量对象;步骤2,分析程序运行状态及执行参数,收集与度量对象相关的进程行为信息;步骤3,根据行为特征判断是否将此次度量结果添加到度量列表中,同时将度量对象相关的进程行为信息收集在度量列表中;步骤4,将度量结果通过扩展操作存储到可信平台模块的特定PCR中,并生成度量报告发送至应用层的日志审计机制;步骤5,根据度量列表、度量日志及PCR中存储的度量结果验证计算平台的完整性状态信息。本发明提供粒度更细的完整性状态信息度量方法,反映的待验证计算平台的安全属性信息更加准确,可提高度量效率。

权利要求 :

1.一种基于进程行为的平台完整性状态信息度量方法,其特征在于,包括以下步骤:步骤1、截获应用层的度量请求,在文件以及应用程序代码执行前或映射到内存之前,使用LSM提供的安全钩子函数以及自定义的钩子函数提取度量对象;

步骤2、分析程序运行状态及执行参数,利用内核维护的打开文件表提取与度量对象相关的进程行为信息;

步骤3、计算度量对象及其索引节点的摘要值,进行行为特征判定,根据程序执行的行为信息判断是否将度量结果添加到度量列表中,同时将与度量对象相关的进程行为信息收集在度量列表中,其步骤如下:

步骤3‑1、根据步骤1中提取的度量对象,计算度量对象索引节点I的哈希值Hash(I)、文件C的哈希值Hash(C);

步骤3‑2、在内存中维护的度量列表中查找度量对象的文件路径及文件名,判断对象是否为首次度量,若为首次度量则跳转到步骤4;

步骤3‑3、根据步骤2中收集的度量对象相关的进程行为信息,判断度量对象索引节点中记录的时间戳以及脏标志位是否发生更新,若文件或其索引节点发生了更新则跳转到步骤4;

步骤3‑4、匹配进程的访问模式与文件的访问权限,若匹配失败,则结束此次度量,同时记录下访问控制失效的进程PID;

步骤3‑5、将度量对象及索引节点的哈希值同度量列表中查找到的记录进行比对,如果两个值均未发生变化,则结束此次度量;

步骤4、将度量列表中的内容通过聚合计算扩展至TPM的平台配置寄存器中,同时生成度量报告发送至应用层的日志审计机制;

步骤5、根据度量列表、度量日志及TPM中存储的度量结果校验计算平台的完整性状态信息,并给出完整性响应,其步骤为:

步骤5‑1、使用步骤2~步骤4的方法收集的平台完整性状态信息,同时收集与被度量对象相关的元信息,与本地度量列表中存储的完整性状态信息进行对比,校验度量对象的完整性属性,方法如下:

在一次度量事件中,对于系统中加载执行的任意实体x,即将执行操作i_mode,将此次度量事件记录为{Hash(C),Hash(I),Fp,Ts,Mask,PID,DW,i_mode},度量列表中记录的完整性状态信息为{Hash(C)′,Hash(I)′,Fp′,Ts′,Mask′,PID′,DW′,i_mode′},当同时满足下列条件时,度量对象x处于可信状态:

1)

2)如果Ts.mtime≤Ts′.mtime,此时DW<Ts.mtime且Hash(C)′=Hash(C)

3)如果Ts.ctime≤Ts′.ctime,此时Hash(I)′=Hash(I)

4)PCRold=Hash(Hash(C)′||Hash(C)...||Hash(I)′||Hash(I));

步骤5‑2、通过重新计算度量列表的有序聚合,与TPM中签名的指定平台配置寄存器的值比对,从而进一步校验度量列表的完整性,并给出完整性响应。

2.如权利要求1所述的基于进程行为的平台完整性状态信息度量方法,其特征在于,步骤1中,使用LSM提供的安全钩子函数以及自定义钩子函数提取度量对象的方法,具体如下:步骤1‑1、使用sysfs文件系统的接口接收的文件描述符,用户空间应用程序通过向/sys/security/measure写入请求来发出度量请求;

步骤1‑2、利用LSM提供的安全钩子函数以及自定义的钩子函数,接收文件指针作为参数,在文件以及应用程序代码执行前或映射到内存之前提取度量对象;所述自定义的钩子函数是指函数MODULE_CHECK(),其在内核初始化时通过initcall()函数注册到内核中。

3.如权利要求1所述的基于进程行为的平台完整性状态信息度量方法,其特征在于,步骤2中,提取与度量对象相关的进程行为信息的方法为:在内核维护的进程级的文件描述符表、系统级的打开文件描述符表及文件系统的i‑node表中,通过提取与度量对象相关的进程行为信息,并对应到相应的结构体数组中,需要提取进程行为的特征信息为下列六元组:BM={Fp,Ts,Mask,PID,DW,i_mode}其中,Fp表示度量对象的完整路径及文件名,文件类型是动态链接库、可执行脚本或文本文件;Ts表示度量对象索引节点中记录的三个时间戳:文件最近读取时间atime、文件最近修改时间mtime、文件索引节点修改时间ctime;Mask表示进程访问度量对象的权限;PID表示进程标识符;DW表示度量对象的脏标志位,指示上一次写入硬盘的时间;i_mode表示度量对象的访问模式,包括读、写、执行;即在度量事件中,进程的行为信息由其访问文件的完整路径和文件名、时间戳、访问模式、进程标识符、访问权限、脏标记位组成。

4.如权利要求1所述的基于进程行为的平台完整性状态信息度量方法,其特征在于,步骤4中将度量列表中的内容扩展存储至TPM的平台配置寄存器的计算方法为:PCRnew=Hash(PCRold||Hash(C)||Hash(I))其中,PCRnew表示扩展操作的结果会存储在PCR中,PCRold表示度量事件发生以前存储在PCR中的值,“||”表示连接操作;

度量列表中需要扩展的内容包括文件及其索引节点哈希值。

说明书 :

基于进程行为的平台完整性状态信息度量方法

技术领域

[0001] 本发明属于可信计算、远程证明领域,特别是一种基于进程行为信息的平台完整性状态信息度量方法。

背景技术

[0002] 随着互联网应用的迅速普及,人们在日常生活中的应用越来越广泛。由于互联网开放互联,同时增添了许多不安全因素,如病毒、蠕虫和特洛伊木马等,他们通过漏洞攻击
终端,严重威胁到计算机安全。如2017年6月始席卷全球150多个国家的Petya勒索病毒及其
变种,这种类型的病毒能通过邮件、程序木马等形式传播,利用携带漏洞的DOC文档进行攻
击。中毒后,病毒会修改系统的MBR引导扇区,加密NTFS分区、阻止机器正常启动。当电脑重
启后,恶意代码会在Windows操作系统之前执行,同时执行加密等恶意操作。因此,保证网络
环境中计算平台的安全性越来越重要,用于证明平台在基于网络的系统中通信的程序是安
全可靠的,已逐渐成为信息安全领域的研究热点。为了确保整个计算机系统的可信赖性,
TCG提出了可信计算技术,力图为网络环境中的计算平台提供端点可信性证明。可信计算技
术在硬件层引入可信平台模块(trusted platform module,TPM),即可信根。从信任根出
发,通过信任链传递机制,逐级度量验证系统组件,可保证整个系统的可信性,进一步通过
远程证明机制验证终端在网络环境中的可信性。
[0003] IBM公司的Sailer等人提出了完整性度量架构(Integrity Measurement Architecture,IMA),它是一种被广泛接受的与TCG规范兼容的远程验证解决方案,提供了
从系统启动到应用程序级别的度量。宾夕法尼亚州立大学的Jaeger等人定义了策略规约完
整性度量框架,它不仅能够度量系统上运行的代码及配置文件,同时可分析进程之间存在
的信息流。因此,PRIMA能够提供更严格、复杂的完整性保证。但PRIMA需进行复杂的分析来
检测和消除CW‑Lite模型中的违法行为,然而它们的方案可能仅适用于具有特定配置的计
算平台。IBM的Sassu等人针对PRIMA的局限性,通过常规文件捕获与记录进程间得交互,提
出了一种增强型IMA架构。尽管只提供较PRIMA粗粒度的完整性度量,但是增强型IMA的易用
性使得那些希望使用远程证明来检测网络攻击的应用可避免执行复杂的SELinux策略分
析。
[0004] 然而,系统环境的可信性同样取决于在运行可执行文件时产生动态的、非结构化的数据。即使应用程序知道这些数据可能会影响其完整性,也很难通过度量手段保证其完
整性,对于远程证明机制中的完整度量框架,IMA及其增强体系架构虽然能够收集和验证系
统的完整性状态,但其同时存在校验粒度粗,度量冗余度高和效率低下的问题。因此,需要
提供一种细粒度、高效的平台完整性状态信息度量方法。但是现有技术中尚无相关描述。

发明内容

[0005] 本发明的目的在于提供一种基于进程行为的平台完整性状态信息度量方法。
[0006] 实现本发明目的的技术解决方案为:一种基于进程行为的平台完整性状态信息度量方法,具体包括以下步骤:
[0007] 步骤1、截获应用层的度量请求,在文件以及应用程序代码执行前或映射到内存之前,使用LSM提供安全钩子函数的以及自定义的钩子函数提取度量对象;具体如下:
[0008] 步骤1‑1、使用sysfs文件系统的接口接收的文件描述符,用户空间应用程序通过向/sys/security/measure写入请求来发出度量请求;
[0009] 步骤1‑2、利用LSM提供的安全钩子函数以及自定义的钩子函数,接收文件指针作为参数,在文件以及应用程序代码执行前或映射到内存之前提取度量对象;所述自定义的
钩子函数是指函数MODULE_CHECK(),其在内核初始化时通过initcall()函数注册到内核
中。
[0010] 步骤2、分析程序运行状态及执行参数,利用内核维护的打开文件表提取与度量对象相关的进程行为信息;
[0011] 提取与度量对象相关的进程行为信息的方法为:在内核维护的进程级的文件描述符表、系统级的打开文件描述符表及文件系统的i‑node表中,通过提取与度量对象相关的
进程行为信息,并对应到相应的结构体数组中,需要提取进程行为的特征信息为下列六元
组:
[0012] BM={Fp,Ts,Mask,PID,DW,i_mode}
[0013] 其中,Fp表示度量对象的完整路径及文件名,文件类型可以是内核模块、动态链接库、可执行脚本或文本文件;Ts表示度量对象索引节点中记录的三个时间戳:文件最近读取
时间atime、文件最近修改时间mtime、文件索引节点修改时间ctime;Mask表示进程访问度
量对象的权限;PID表示进程标识符;DW表示度量对象的脏标志位,指示上一次写入硬盘的
时间;i_mode表示度量对象的访问模式,包括读、写、执行;即在度量事件中,进程的行为信
息由其访问文件的完整路径和文件名、时间戳、访问模式、进程标识符、访问权限、脏标记位
组成。
[0014] 步骤3、计算度量对象及其索引节点的摘要值,进行行为特征判定,根据程序执行的行为信息判断是否将度量结果添加到度量列表中,同时将与度量对象相关的进程行为信
息收集在度量列表中;
[0015] 通过行为特征判断是否将度量结果添加到度量列表中,其步骤如下:
[0016] 步骤3‑1、根据步骤1中提取的度量对象,计算度量对象索引节点I的哈希值Hash(I)、文件C的哈希值Hash(C);
[0017] 步骤3‑2、在内存中维护的度量列表中查找度量对象的文件路径及文件名,判断对象是否为首次度量,若为首次度量则跳转到步骤4;
[0018] 步骤3‑3、根据步骤2中收集的度量对象相关的进程行为信息,判断度量对象索引节点中记录的时间戳以及脏标志位是否发生更新,若文件或其索引节点发生了更新则跳转
到步骤4;
[0019] 步骤3‑4、匹配进程的访问模式与文件的访问权限,若匹配失败,则结束此次度量,同时记录下访问控制失效的进程PID;
[0020] 步骤3‑5、将度量对象及索引节点的哈希值同度量列表中查找到的记录进行比对,如果两个值均未发生变化,则结束此次度量。
[0021] 步骤4、将度量列表中的内容通过聚合计算扩展至TPM的平台配置寄存器中,同时生成度量报告发送至应用层的日志审计机制;将度量列表中的内容扩展存储至TPM的平台
配置寄存器的计算方法为:
[0022] PCRnew=Hash(PCRold||Hash(C)||Hash(I))
[0023] 其中,PCRnew表示扩展操作的结果会存储在PCR中,PCRold表示度量事件发生以前存储在PCR中的值,“||”表示连接操作;
[0024] 度量列表中需要扩展的内容包括文件及其索引节点哈希值。
[0025] 步骤5、根据度量列表、度量日志及TPM中存储的度量结果校验计算平台的完整性状态信息,给出完整性响应。给出的平台完整性的验证方法为:
[0026] 步骤5‑1、使用步骤2~步骤4的方法收集的平台完整性状态信息,同时收集与被度量对象相关的元信息,与本地度量列表中存储的完整性状态信息进行对比,校验度量对象
的完整性属性;校验度量对象的完整性属性的方法如下:
[0027] 在一次度量事件中,对于系统中加载执行的任意实体x,即将执行操作i_mode,将此次度量事件记录为{Hash(C),Hash(I),Fp,Ts,Mask,PID,DW,i_mode},度量列表中记录的
完整性状态信息为{Hash(C)′,Hash(I)′,Fp′,Ts′,Mask′,PID′,DW′,i_mode′},当同时满足
下列条件时,度量对象x处于可信状态:
[0028] 1)
[0029] 2)如果Ts.mtime≤Ts′.mtime,此时DW<Ts.mtime且Hash(C)′=Hash(C)
[0030] 3)如果Ts.ctime≤Ts′.ctime,此时Hash(I)′=Hash(I)
[0031] 4)PCRold=Hash(Hash(C)′||Hash(C)...||Hash(I)′||Hash(I))。
[0032] 步骤5‑2、通过重新计算度量列表的有序聚合,与TPM中签名的指定平台配置寄存器的值比对,从而进一步校验度量列表的完整性,并给出完整性响应。
[0033] 本发明与现有技术相比,其显著优点为:1)本发明的方法针对平台完整性状态收集的粗粒度缺陷,在可执行内容被加载到系统中之前,对其进行完整性度量并将度量结果
通过扩展操作存储于硬件保护的PCR中,提供了实时、细粒度的平台完整性状态信息收集方
案;2)本发明的方法收集度量对象相关的进程行为信息,对度量过程进行优化,可提高平台
完整性度量效率;3)本发明的方法可实时地监控系统运行状况,通过评估平台的完整性状
态检测是否被远程或本地进程恶意地篡改。
[0034] 下面结合附图对本发明作进一步详细阐述。

附图说明

[0035] 图1为基于进程行为的平台完整性状态信息度量方法实现流程图。
[0036] 图2为基于进程行为的平台完整性状态信息度量框架图。
[0037] 图3为实施本方法生成的度量列表图。
[0038] 图4为本方法与IMA的度量次数对比图。

具体实施方式

[0039] 为了使本领域技术人员更好地理解本申请中的技术问题、技术方案和技术效果,下面结合附图和具体实施方式对本发明基于进程行为的平台完整性状态信息度量方法作
进一步详细说明。
[0040] 本发明提供一种基于进程行为信息的平台完整性度量方法,基本流程如图1所示。具体步骤如下:
[0041] 步骤1、截获应用层的度量请求。用户空间应用程序通过向/sys/security/measure写入请求来发出度量请求,使用sysfs文件系统的接口接收度量对象的文件描述
符。利用LSM提供的安全钩子函数以及自定义的钩子函数MODULE_CHECK(),其在内核初始
化时通过initcall()函数注册到内核中。同时以度量对象的文件描述符作为参数,在文件
以及应用程序代码执行前或映射到内存之前提取度量对象,度量对象包括系统的二进制可
执行程序、动态链接库、文本文件、可加载内核模块、脚本文件。
[0042] 步骤2、分析程序运行状态及执行参数,提取与度量对象相关的进程行为信息。通过内核维护的进程级的文件描述符表、系统级的打开文件描述符表及文件系统的i‑node
表,提取与度量对象相关的进程行为信息,并对应到相应的结构体数组中,需要提取的进程
行为的特征信息为下列六元组:
[0043] BM={Fp,Ts,Mask,PID,DW,i_mode}
[0044] 其中,Fp表示度量对象的完整路径及文件名,文件类型可以是内核模块、动态链接库、可执行脚本或文本文件。Ts表示度量对象索引节点中记录的三个时间戳为:文件最近读
取时间atime、文件最近修改时间mtime、文件索引节点修改时间ctime。Mask表示进程访问
度量对象的权限。PID表示进程标识符。DW表示度量对象的脏标志位,指示上一次写入硬盘
的时间。i_mode表示度量对象的访问模式,包括读、写、执行。即在度量事件中,进程的行为
信息由其访问文件的完整路径和文件名、时间戳、访问模式、进程标识符、访问权限、脏标志
位组成。
[0045] 步骤3、计算度量对象及其索引节点的摘要值,进行行为特征判定,根据程序执行的行为信息判断是否将度量结果添加到度量列表中,同时将与度量对象相关的进程行为信
息收集在度量列表中,行为特征判定的步骤如下:
[0046] 步骤3.1、通过步骤1中提取的度量对象,计算度量对象索引节点I的哈希值Hash(I)、文件C的哈希值Hash(C);
[0047] 步骤3.2、在内存中维护的度量列表中查找度量对象的文件路径及文件名,判断对象是否为首次度量,若为首次度量则跳转到步骤4;
[0048] 步骤3.3、根据步骤2中收集的度量对象相关的进程行为信息,判断度量对象索引节点中记录的时间戳以及脏标志位是否发生更新,若文件或其索引节点发生了更新则跳转
到步骤4;
[0049] 步骤3.4、匹配进程的访问模式与文件的访问权限,若匹配失败,则结束此次度量,同时记录下访问控制失效的进程PID;
[0050] 步骤3.5、将度量对象及索引节点的哈希值同度量列表中查找到的记录进行比对,如果两个值均未发生变化,则结束此次度量。
[0051] 步骤4、根据应用需求将度量列表中的内容通过聚合计算扩展至TPM的平台配置寄存器中,同时生成度量报告发送至应用层的日志审计机制。将度量列表中的内容扩展至TPM
的平台配置寄存器的计算方法为:
[0052] PCRnew=Hash(PCRold||Hash(C)||Hash(I))
[0053] 其中,PCRnew表示扩展操作的结果会存储在PCR中,PCRold表示度量事件发生前存储在中的值,“||”表示连接操作。将度量列表中记录的文件及其索引节点的哈希值通过聚合
计算存储于TPM中。
[0054] 步骤5、使用步骤2~4的方法收集的平台完整性状态信息,同时收集与被度量对象相关的元信息,与本地度量列表中存储的完整性状态信息进行对比,校验度量对象的完整
性属性。
[0055] 在度量事件中,校验被加载文件的完整性属性的方法如下。在一次度量事件中,对于系统中加载执行的任意实体x,度量对象x即将执行操作i_mode,将此次度量事件记录为
{Hash(C),Hash(I),Fp,Ts,Mask,PID,DW,i_mode},度量列表中记录的完整性状态信息为
{Hash(C)′,Hash(I)′,Fp′,Ts′,Mask′,PID′,DW′,i_mode′},当同时满足下列条件时,度量
对象x处于可信状态:
[0056] 1)
[0057] 2)如果Ts.mtime≤Ts′.mtime,此时DW<Ts.mtime且Hash(C)′=Hash(C)
[0058] 3)如果Ts.ctime≤Ts′.ctime,此时Hash(I)′=Hash(I)
[0059] 4)PCRold=Hash(Hash(C)′||Hash(C)...||Hash(I)′||Hash(I))
[0060] 通过重新计算度量列表的有序聚合,与TPM中签名的指定平台配置寄存器的值比对,进一步校验度量列表的完整性,并给出完整性响应。本发明的方法收集度量对象相关的
进程行为信息,对度量过程进行优化,可提高平台完整性度量效率。
[0061] 下面结合实施例对本发明做进一步详细的描述。
[0062] 实施例
[0063] 基于搭载Linux‑2.6.32内核版本的x86主机实施本发明方法,操作系统使用嵌入TPM模拟器、可信协议栈TrouSerS的Ubantu操作系统,将本发明方法的功能模块编译进内
核,作为完整性度量模块运行,并以此作为一个实施例,嵌入内核的完整性度量框架如图2
所示。
[0064] 在实验中观察了大约60‑70个bash脚本和二进制文件的度量结果,度量列表如图3所示。图中第一行第一列“10”表示该度量对象及索引节点哈希值扩展到PCR的10号寄存器
中,第二列“9202b189adcee134057a807610df110e5a71e36f”记录对象索引节点的哈希值,
第三列“sha1:5b9cf6a1cf1f454f53d15812b06b5691d9471809”记录对象内容的sha‑1哈希
值,第四列“/usr/lib/python3/dist‑packages/UpdateManager/Core/__pycache__/
MetaRelease.Cpython‑35.pyc”记录文件的完整访问路径及文件名,第五列记录了访问对
象的进程pid“2229”,最后一列记录了对象的mtime“2017‑08‑08 16:26:27.527113098+
0800”。计算度量列表的度量结果为“1d8d532d463c9f8c205d0df7787669a85f93e260”,同时
通过扩展操作存储至PCR的10号寄存器中。记录了十次实验中系统在运行阶段扩展度量列
表的操作次数,本发明方法与IMA模块的性能对比结果如图4所示,本文实现的方法执行的
度量操作次数较IMA明显的减少,度量效率较IMA均有一定幅度的提升。由于减少了将度量
结果扩展到PCR的操作次数,节省了度量的时间成本,通过减少冗余度量缩小了内存中ML的
表容量。
[0065] 由上可知,本发明提供粒度更细的完整性状态信息度量方法,反映的待验证计算平台的安全属性信息更加准确,可提高度量效率。