一种新的进程可信保护方法.docx

上传人:b****6 文档编号:3838456 上传时间:2022-11-25 格式:DOCX 页数:7 大小:66.39KB
下载 相关 举报
一种新的进程可信保护方法.docx_第1页
第1页 / 共7页
一种新的进程可信保护方法.docx_第2页
第2页 / 共7页
一种新的进程可信保护方法.docx_第3页
第3页 / 共7页
一种新的进程可信保护方法.docx_第4页
第4页 / 共7页
一种新的进程可信保护方法.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

一种新的进程可信保护方法.docx

《一种新的进程可信保护方法.docx》由会员分享,可在线阅读,更多相关《一种新的进程可信保护方法.docx(7页珍藏版)》请在冰豆网上搜索。

一种新的进程可信保护方法.docx

一种新的进程可信保护方法

一种新的进程可信保护方法

《可信计算》论文

摘要:

随着计算机终端系统中安全问题的日益突出,用户对计算机甚至整个信息系统产生了不信任。

在网络环境下,如何建立用户到应用的可信通道,并确保系统任务授权执行是一个值得深入研究的课题。

文章从可信计算平台规范的思想入手,通过数据完整性检测方法从静态保护和动态保护两个方面探索了系统中关键进程的可信保护机制。

一、引言

目前,网络环境下系统用户的信任保证技术和不同节点间的信任管理和维护方法已经成为新的研究热点,但如何保障用户信任自己直接操作的终端系统却没有引起足够的重视。

事实上,计算机代理用户执行任务的实体是进程以及由进程派生的线程。

病毒和木马破坏计算机安全的重要途径就是修改原有进程的执行体或者让系统启动时产生新的未授权进程。

黑客则擅长利用进程

二、可信计算平台及其信任机制

国际TCG组织一直致力于可信计算平台的研究,制定了一系列指导可信计算平台设计的TCG规范。

它建议的可信计算机在传统计算机组成上增加一个硬件构成的信任根,借助信任根和数据的完整性保护和加解密技术实现整个平台软件的保护。

可信计算机启动时的控制逻辑如图1所示。

  

图1可信计算平台的信任机制

从图1可以看出,计算机的启动被底层信任根TPM接管。

TPM首先认证BIOS的完整性,在确认BIOS完整的情况下将控制权交给它;BIOS执行后同样认证MBR和操作系统加载程序的完整性,并在确认他们无误的情况下将控制权交给操作系统加载程序;接着操作系统加载程序检查操作系统核心和重要组件的完整性,并把控制权交给操作系统;最后由操作系统担保上层各种应用的信任性。

由于可信计算机需要底层硬件和操作系统的全面配合,相对通用计算机系统而言变化较大。

我们借鉴TCG规范的思想,深入研究了通用计算机系统的可信增强方法:

采用SOC技术设计并生产了自己的安全核心SUP320;使用SUP320设计并实现了一个通用计算机系统安全控制用的USBKEY;采用“用户USBKEY+安全BIOS”作为系统的信任根,探索了通用计算机系统的可信增强方法。

考虑到上层应用的多样性和多变性,研究过程中着重探索如何借助USBKEY建立各种应用进程的可信保护机制,实现用户到进程的可信路径。

三、基于USBKEY的进程可信保护

遵循可信计算平台的思想,操作系统进程的可信性可以由其代码和数据的完整性来保障。

进程完整性保护又可以看作是两个阶段的保护:

进程在磁盘存储介质上的静态完整性保护和进程在内存执行时的动态完整性保护。

前一个阶段可以借助文件系统完整性保护来实现,后一个阶段则需要对进程所在的内存区域进行完整性保护。

1.静态完整性保护

不少学者很早就开始了对文件系统静态完整性保护技术的研究:

如Linux下的文件系统完整性保护工具Tripwire能够对指定的文件目录进行完整性扫描。

TCG规范诞生后,一个开放源代码的Linux安全模块Enforcer又引起了人们的关注。

它借助TPM对文件系统进行保护,能够在上层应用程序打开文件时对文件进行检查。

作者希望采用文件系统完整性保护的思想保护操作系统重要进程的完整性。

由于病毒或木马通常修改进程的执行文件或链接库文件,以便用户下次启动系统时仍然能够获得系统的控制权,因此要保护进程静态存储的完整性就必须逐个检查进程的执行文件和运行时支持库文件的完整性。

为讨论问题方便,我们假设需要保护的进程列表为P1、P2…Pm,并假设进程Pi相关的文件有Fi1、Fi2…Fij(0

考虑到动态连接库文件可能为多个进程共用,文件Fikjk和文件Fiijl可能为同一个文件。

定义辅助的文件集合Wij:

当扫描进程Pi的第j个文件Fij时集合Wij包含进程P1到进程Pi-1的所有相关文件,以及进程Pi的已经扫描的所有文件Fil(0

定义辅助函数Q(Fij):

因此,m个进程需要保护的文件共有N个:

每一个文件都采用HASH算法生成文件的摘要值Hash()并保存起来,进程的完整性度量值定义为:

首先计算目标进程的所有相关文件的摘要值并进行简单连接,然后计算连接后的字节串的摘要值。

即:

N个文件的完整性度量值hash(Fij)保存到检测模块管理的磁盘文件中,但每一个保护的进程的完整性度量值被用户USBKEY签名后存放到USBKEY中安全核心芯片SUP320管理的片内FLASH当中。

因为USBKEY被用户随身携带,保护的进程在启动之前都需要按照上述过程进行检测并和存放在USBKEY当中的完整性度量值进行比对。

我们把这一过程称为进程的完整性认证。

通过认证进程的完整性,用户能够确信自己关心的进程在启动之前是否可信。

以上通过文件保护实现进程保护的逻辑关系如图2所示。

图2进程静态保护的逻辑关系

为了能够将破坏的进程恢复到原来的状态,我们进一步采用了文件压缩和映象技术。

即将N个文件压缩存储为一个大的映象文件,确定进程完整性遭受破坏后,再从该映象文件中解压并恢复被破坏的进程文件。

这种方法非常类似Ghost软件的映象功能,不同的是Ghost直接对整个磁盘分区进行映象,恢复也针对整个磁盘分区,而我们的进程保护模块只对关心的文件进行备份和恢复。

2.动态完整性保护

进程静态完整性保护能够确保进程处在非活跃状态时的进程数据的完整性,但它不能确保进程加载到内存后没有被修改。

保护进程在活跃状态下的完整性需要采用进程动态完整性保护技术。

动态完整性保护包含两个主要方面:

一是保护进程在内存中的安全,防止外部进程通过修改内存对其破坏;二是控制非授权进程的启动。

(1)进程的内存保护

现有的操作系统内存管理存在一定的安全缺陷,主要表现为:

•进程的内存空间缺乏篡改防护,许多游戏作弊工具和内存修改工具可以直接对内存进行修改;

•不同的进程通过将动态连接库的共享空间映射到自己的地址空间实现代码的共享调用,任何一个调用动态连接库的进程可以通过HOOK技术实现对动态连接库中公共函数的修改并通知其他调用进程。

这样就导致了病毒和木马可以通过感染动态连接库修改其它进程的执行行为或者传播自己的拷贝。

本文讨论的进程内存保护仍然采用监控内存引用的办法:

活跃在系统中的进程的私有空间都可看作由一系列(设最多n个)内存页面组成:

Page1,Page2…Pagen。

每一个Page中的数据都对应一个完整性度量值hash1,hash2…hashn。

如果进程全部加载到内存中,则进程在内存中的完整性度量值应该等于该进程的静态完整性度量值:

系统实现一个内核态模块监控操作系统中进程的创建、调度和内存的引用。

对内存管理进行如下控制:

•受保护的关键进程被创建和调度时,操作系统将保护进程的执行代码从磁盘调入内存后,监控模块即对这些进程占用的内存页进行登记,对每一个页面进行完整性度量并记录度量结果。

•系统运行过程中,一旦监控模块发现内存引用的区域是登记的进程敏感区域,首先判断该次引用是否为修改:

a)如果是修改,则继续判断引用主体是否为包含该内存区域的进程:

i.如果是,说明是进程代码对自身的修改,则在进程修改页面完成后重新计算该页面的完整性度量值并保存下来;

ii.否则,拒绝对该页面执行修改。

b)如果不是修改;在页面引用前验证页面的完整性。

i.验证通过则允许进程继续执行;

ii.否则,通知用户当前进程被篡改并结束进程的执行。

上述控制的流程描述如图3所示。

    

图3进程动态保护流程  

上述进程动态完整性保护模型通过进程体在内存中的“读校验”机制确保了进程自身的完整性,消除了黑客利用系统漏洞在进程中插入代码的威胁;同时该模型通过进程的“写保护”机制阻断了不同进程间的随意篡改,杜绝了木马和病毒在内存中对进程的直接破坏和附着。

由于进程结束时对应的内存区域将被操作系统释放,进程下一次启动时将重新从磁盘读取执行体并被操作系统重新分配新的内存区域,因此进程动态保护不需要对进程的内存区域进行备份。

(2)控制非授权进程的启用

由于病毒和木马通常会创建新的进程,以达到消耗系统资源,窥探用户秘密的目的。

为了杜绝非授权进程的启用,系统使用一个授权进程列表记录操作系统自带的进程和用户关键应用程序的进程,并对系统中的进程创建进行实时监控。

如果新创建的进程在授权进程列表中且进程的静态完整性良好,则允许该进程创建,否则拒绝创建对应的进程。

通过授权进程这种“白名单”的方法,确保了系统中只存在授权的合法的进程,病毒、蠕虫和木马的进程不能被触发,从而也就保护了计算机系统的安全。

3.进程与文件的关联

一个进程可以看作由执行代码、内部数据和外部IO组成,外部IO又包括用户输入,网络传送和文件操作。

通过前面所述的进程静态保护和动态完整性保护能够确保进程自身的完整性,但外部IO来的数据由于不可预期,无法确保其正确。

在实际应用中,许多重要应用进程必须通过外部配置文件的数据进行初始化,同样不少机密数据文件如果被未授权进程读写可能会导致数据不一致而带来安全问题。

为了保护进程相关的文件的完整性,系统还结合保护进程列表设计了一种“文件-进程”绑定机制。

即将文件全路径名称、文件授权的进程ID和对应权限三种信息作为一条记录保存到一个内核态的安全文件管理模块(SFM)当中。

进程ID定义为进程的静态完整性度量值:

ID(Pi)=Integrity(Pi)

当受保护文件被进程引用的时候,操作系统查找SFM中的记录。

并根据记录中的授权信息检查文件访问主体——进程的身份是否合法。

这一过程可以描述为图4所示:

图4文件授权进程的逻辑关系

文件和进程关联后,进程索引的配置文件和各种输入对象(如进程执行过程中需要读取某个文件)也能够得到保护,从而更加确保进程按照期望的行为执行。

四、系统实现

我们将上述进程保护的思想设计为一个Linux的内核模块,通过替换操作系统的相关API调用,监控操作系统的进程调度,文件访问和内存管理。

实现的内核模块分别管理着授权运行的进程列表和需要绑定到进程的文件列表。

进程列表中的每一项代表一个用户授权的被内核模块保护的进程。

其数据结构包含进程名称、进程的完整性度量值,进程对应的文件数目,具体包含文件的列表的头指针,进程当前在内存中缓存的页面数目,具体缓存页面的列表的头指针等。

表1保护进程数据结构

进程完整性文件文件链缓存页面链

名称度量值数目表头页数表头

表2文件链表节点数据结构

文件文件全路文件完整性下一个

ID径名称大小度量值节点指针

表3缓存页面链表节点数据结构

页编号完整性度量值起始地址结束地址占用大小

考虑到重要文件被多个进程引用的情况,典型的文件F对三个不同的进程开放,分别许可的权限如表4所示。

表4文件F对3个进程开放

进程名P1P2P3

权限读、写

和执行读和写读

实现时系统采用一个内核态的保护文件列表ProtectFileList,每一个列表项对应一个文件授权信息。

文件开放的所有进程通过一个列表进行管理,具体数据结构如表5和表6所示。

表5保护文件列表节点数据结构

文件文件全路授权进授权进程

ID径名称程数目链表头

表6授权进程链表节点数据结构

进程ID进程权限集合下一个

(完整性度量值)名称(r,w,x)节点指针

上面的进程和文件管理信息库中的静态数据以及信息库的HASH值被保存到用户USBKEY中SUP320的片内FLASH内,每次用户开机后安全模块扫描信息库的完整性并和USBKEY中存放的HASH值进行比较,如果完整,则使用系统中的信息库对进程和文件进行监控管理,否则从USBKEY中恢复信息库后再对系统中的进程和文件进行监控管理。

五、测试和分析

我们在Linux9.0操作系统中安装上述进程保护模块,并采用替换进程核心文件,使用内存修改工具修改内存等办法对改造的系统进行测试。

结果如下:

表7测试结果  

从测试表明,USBKEY支持下进程保护模块能够对系统中授权执行的重要进程进行完整性度量,并把度量的结果封装到用户随身携带的USBKEY当中。

同时基于进程的完整性度量值验证访问受保护文件的进程身份。

这样,在用户USBKEY的帮助下系统建立了用户到活跃进程的信任关系,确保了授权进程的可信,杜绝了非法进程的启动。

从而一定程度上阻断了病毒和木马的植入和影响。

六、结束语

进程是操作系统代理用户执行各种任务的真正实体,建立用户到进程的信任关系并保证代理进程的可信对于安全应用至关重要。

我们借鉴可信计算平台的设计思想,基于用户USBKEY并通过数据完整性保护的办法实现了进程保护的原型系统。

存在的问题是:

一旦某个失控的进程修改了加载到内存中的动态连接库,其他调用该动态连接库的进程也会受到影响。

我们下一步打算对内存映射机制作更加严格的控制,禁止进程修改动态连接库的内存区域。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1