收藏 分销(赏)

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

上传人:精*** 文档编号:4776246 上传时间:2024-10-12 格式:DOCX 页数:16 大小:40.91KB 下载积分:8 金币
下载 相关 举报
一种新的进程可信保护方法.docx_第1页
第1页 / 共16页
一种新的进程可信保护方法.docx_第2页
第2页 / 共16页


点击查看更多>>
资源描述
一种新的进程可信保护方法 《可信计算》论文 摘要:随着计算机终端系统中安全问题的日益突出,用户对计算机甚至整个信息系统产生了不信任。在网络环境下,如何建立用户到应用的可信通道,并确保系统任务授权执行是一个值得深入研究的课题。文章从可信计算平台规范的思想入手,通过数据完整性检测方法从静态保护和动态保护两个方面探索了系统中关键进程的可信保护机制。 一、引言 目前,网络环境下系统用户的信任保证技术和不同节点间的信任管理和维护方法已经成为新的研究热点,但如何保障用户信任自己直接操作的终端系统却没有引起足够的重视。事实上,计算机代理用户执行任务的实体是进程以及由进程派生的线程。病毒和木马破坏计算机安全的重要途径就是修改原有进程的执行体或者让系统启动时产生新的未授权进程。黑客则擅长利用进程中的各种漏洞进行缓冲区溢出攻击获得更高权限。因此,监视操作系统中进程的变化,保护授权进程不被恶意篡改、确保进程的可信性对于终端系统的安全至关重要。此前,Capability(权能)系统和DTE (Domain and Type Enforcement )系统主要根据最小特权原则为每个进程分配尽可能少的特权或权限来降低不安全进程给整个系统所带来的危害。遗憾的是Capability系统和DTE系统忽视了进程权限的动态变化;多保护域进程模型则需要预先明确进程在不同阶段对不同内存区域的访问权限,控制策略缺乏足够的灵活性,由于模型还需要对进程所属代码和数据的存放位置进行适当安排,在实现上也显复杂。 本文借鉴国际TCG组织建议的可信计算平台的设计思想,通过度量进程代码和数据的完整性判定其可信性。该方法综合运用软硬件控制,采用单向散列算法,在通用开放的计算机系统中建立起用户到进程的可信通道,确保了进程代理用户任务的可信性。同时也防止了非法进程的随意启动,一定程度上消除了病毒和木马对系统的破坏。 二、可信计算平台及其信任机制 国际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<i<=m, 0<j<=n, m为进程数目,n为一个进程最大可能对应的文件数目)。考虑到动态连接库文件可能为多个进程共用,文件Fikjk和文件Fiijl可能为同一个文件。 定义辅助的文件集合Wij:当扫描进程Pi的第j个文件Fij时集合Wij包含进程P1到进程Pi-1的所有相关文件,以及进程Pi的已经扫描的所有文件Fil(0<l<j)。 定义辅助函数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个进程开放 进程名 P1 P2 P3 权限读、写 和执行读和写读 实现时系统采用一个内核态的保护文件列表ProtectFileList,每一个列表项对应一个文件授权信息。文件开放的所有进程通过一个列表进行管理,具体数据结构如表5和表6所示。 表5 保护文件列表节点数据结构 文件文件全路授权进授权进程 ID 径名称程数目链表头 表6 授权进程链表节点数据结构 进程ID 进程权限集合下一个 (完整性度量值) 名称(r, w, x)节点指针 上面的进程和文件管理信息库中的静态数据以及信息库的HASH值被保存到用户USBKEY中SUP320的片内FLASH内,每次用户开机后安全模块扫描信息库的完整性并和USBKEY中存放的HASH值进行比较,如果完整,则使用系统中的信息库对进程和文件进行监控管理,否则从USBKEY中恢复信息库后再对系统中的进程和文件进行监控管理。 五、测试和分析 我们在Linux 9.0操作系统中安装上述进程保护模块,并采用替换进程核心文件,使用内存修改工具修改内存等办法对改造的系统进行测试。结果如下:表7 测试结果   从测试表明,USBKEY支持下进程保护模块能够对系统中授权执行的重要进程进行完整性度量,并把度量的结果封装到用户随身携带的USBKEY当中。同时基于进程的完整性度量值验证访问受保护文件的进程身份。这样,在用户USBKEY的帮助下系统建立了用户到活跃进程的信任关系,确保了授权进程的可信,杜绝了非法进程的启动。从而一定程度上阻断了病毒和木马的植入和影响。 六、结束语 进程是操作系统代理用户执行各种任务的真正实体,建立用户到进程的信任关系并保证代理进程的可信对于安全应用至关重要。我们借鉴可信计算平台的设计思想,基于用户USBKEY并通过数据完整性保护的办法实现了进程保护的原型系统。存在的问题是:一旦某个失控的进程修改了加载到内存中的动态连接库,其他调用该动态连接库的进程也会受到影响。我们下一步打算对内存映射机制作更加严格的控制,禁止进程修改动态连接库的内存区域。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服