APP下载

国产自主平台下可信执行环境的设计与实现

2012-02-09郝福珍徐东华

计算机工程与设计 2012年10期
关键词:配置管理哈希列表

敬 军,郝福珍,徐东华

(华北计算技术研究所,北京100083)

0 引 言

我国不断加大信息技术研发和产业发展投入,自主信息技术发展迅速,部分自主关键软硬件取得突破,功能性能已经接近国际主流产品水平,并在一些领域推广使用。“十一五”后期,国家又启动“核高基”重大科技专项,将自主信息技术和产业发展推上了快车道,为我国信息系统向自主可控发展创造了战略机遇,同时对信息系统安全性也提出了更高的要求。然而,传统的信息安全技术主要是采用被动防御手段,对新型的安全威胁往往无法及时发现,带有严重的滞后性,无法有效地解决国产自主平台下应用程序执行所面临的安全性问题。

可信计算技术[1]被认为是最有可能从根本上解决计算机系统安全问题的一种方案,它采取主动防御的方式、从终端入手解决安全问题,其核心思想是:以信任根为核心(提供密码操作和安全存储),把核心信任根模块(core root of trust module,CRTM)作为起点,采取基于可信平台模块的信任链传递技术,并依靠其提供的完整性度量和验证服务,按照计算机系统的启动运行过程,一级验证一级,一级信任一级的方式,实现信任链的传递,构建系统的可信安全状态,可以从根本上保证计算机系统的安全性[2-3]。

为了有效的保护国产平台下应用程序的安全性,本文根据可信计算的基本原理,在国产自主平台下设计并实现了可信执行环境。在分析国产自主平台自身的特点与问题的基础上,利用LSM[4](Linux security module)简化可信执行环境拦截应用程序的实现,运用软硬件结合二级计算方式计算哈希值以提升可信验证的性能,保证应用程序执行可信性,为国产自主平台的安全可控提供了一种有效的防护性措施。

1 可信执行环境设计

1.1 基本原理

可信执行环境,是为保护应用程序执行,建立在操作系统之上的安全环境[5]。它在应用程序执行前,对其进行完整性度量,保护应用程序执行的可信性,实现信任链从可信操作系统到可信应用程序的传递。其总体框架可以概括如图1所示,主要过程为:

(1)对操作系统上运行的应用程序,提取其核心组件信息内容;然后依据提取的应用程序的核心组件信息内容,建立维护可信文件列表,并通过硬件信任根模块对可信文件列表进行存储保护。

(2)在应用程序启动运行时,可信执行环境可以截获其启动消息,完成对其运行的拦截,依据可信文件列表对应用程序进行完整性度量,判断应用程序是否处于可信状态。

(3)根据应用程序是否处于可信状态,执行不同的处理:如果处于可信状态,则允许应用程序执行;如果处于不可信状态,则利用可信备份文件对应用程序进行恢复。

1.2 设计方案

国产自主平台下可信执行环境,在硬件方面以国产可信密码模块(trusted cryptography module,TCM)[6]为基础,通过TCM服务模块(tcm service module,TSM)向上提供的可信服务,保证可信验证的各项操作。整个可信执行环境可以分为3个主要的功能模块:可信拦截模块、可信监控验证模块和可信配置管理模块,如图2所示。

1.2.1 可信拦截模块

可信拦截模块的主要功能是对应用程序的启动进行自动拦截,提取应用程序的核心组件信息作为可信验证的数据。

在国产操作系统下,对应用程序进行拦截一般有两种方案,一种是直接修改系统调用函数,这种方法需要修改大量的内核代码,容易造成内核代码的混乱,可能导致操作系统运行的不稳定,影响用户正常使用;另一种是利用LSM这种通用访问控制框架,它在特定的内核数据结构中加入了安全字段,用于存放安全属性,并在内核源代码中的关键点插入了安全钩子函数[7-9],只需要重载LSM框架在应用程序执行时插入的HOOK函数,便可以实现应用程序的拦截。为了降低对操作系统运行稳定性的影响,该模块在实现时采用的是第二种方案。

1.2.2 可信监控验证模块

可信监控验证模块是可信执行环境中的核心模块,其主要功能是依据可信文件列表对拦截到的应用程序进行完整性度量。完整性度量的过程是,对应用程序核心组件进行哈希计算,与可信文件列表中的基准值进行比对,如果一致,则应用程序可信,允许执行,如果不一致,则提醒用户。对应用程序进行完整性度量,其关键是计算应用程序核心组件的哈希值。

目前国产信息系统中广泛使用的国产TCM芯片是国民技术TCM芯片,它采用兼容标准8051指令集的8位CPU内核,计算能力有限。采用SM3算法[10]计算哈希值的速率在1 Mbps左右,理论上计算1 M字节数据内容耗时需要8s。当应用程序的核心文件大小超过1M时,如果仅仅采用TCM硬件实现的SM3进行计算,耗时较长,对应用程序的正常启动影响较大。

在确保验证正确性的前提下,为了提升验证的性能,本文在可信监控验证模块实现了一种度量引擎。该度量引擎采用哈希值软硬件相结合的二级计算方式,加快对核心组件信息的哈希计算,可有效缩短度量引起的延时。

1.2.3 可信配置管理模块

可信配置管理模块的主要功能是辅助可信监控验证模块执行,对一些重要的信息内容进行管理维护,保证可信执行环境的正常运行,包括3个功能模块:文件配置管理模块,主要用来管理维护可信文件列表、备份恢复文件等核心数据,提供对这些数据的基本操作功能;可信策略配置管理模块,主要为用户提供可配置的安全策略,简化用户可信验证的操作;TCM配置管理模块,主要对TCM进行管理,方便用户及时掌握可信执行环境硬件核心的运行情况。

2 可信执行环境实现

2.1 可信拦截模块

本文对应用程序的执行过程做了详细研究:当execve()函数获取应用程序执行的消息后,会陆续执行sys_execve()、do_execve()、open_exec()、prepare_binprm()、search_binary_handler()等一系列系统函数,来完成对应用程序的加载执行。LSM框架在系统函数search_binary_handler()中提供加入了安全钩子函数bprm_check_security(struct linux_binprm*bprm),为了实现对应用程序的启动拦截,本文重点重载了该安全钩子函数,其关键代码如下:

2.2 可信监控验证模块

2.2.1 度量引擎

度量引擎采用哈希值软硬件结合的二级计算方式加快哈希值的计算速率。为了兼顾用户对执行效率以及抗攻击能力的要求,软算法(软件实现算法)可以选用MD5或SHA1,用户可以根据实际需要通过配置管理模块对其进行配置;硬算法(硬件实现算法)仍然选用TCM芯片提供的SM3算法,整个哈希计算的过程如图3所示。

图3 度量引擎计算过程

在调用度量引擎进行哈希计算时,首先将待校验的数据输入到软件实现的MD5(或SHA1)算法,得到16字节(或20字节)的校验值,接着将该校验值送入TCM芯片中利用SM3算法进行第二次计算,得到最终32字节的哈希值,作为可信完整性度量的使用数据。

2.2.2 可信文件列表

在可信执行环境下,可信验证的判断依据就是可信文件列表。在可信文件列表中记录着应用程序执行完整性度量所需要的核心信息,是可信执行环境下进行可信验证的基础。它被TCM芯片所保护,其读写操作必须通过TCM的验证。

本文对可信文件列表的格式做了定义,其每一项内容都包含应用程序的执行路径(4097字节)、软算法标识(4字节)、应用程序核心文件哈希值(32字节)、应用程序核心文件的存储备份路径(4097字节),如图4所示。其中,软算法标识记录了度量引擎在计算哈希值时具体使用的软算法。

图4 可信文件列表格式

2.2.3 可信验证过程

在可信执行环境下,可信验证的具体执行过程如图5所示,并按照下面步骤进行:

(1)利用可信拦截模块拦截应用程序;

(2)在可信文件列表中查找应用程序存储的核心组件的哈希值;

(3)在可信文件列表中,查找度量引擎在哈希计算时使用的软算法标识,并根据软算法标识,调用度量引擎计算应用程序核心组件的哈希值;

(4)比较两个哈希值,判断应用程序的完整性是否发生变化;

(5)如果完整性未发生变化,则允许应用程序继续执行;否则根据可信配置管理模块中的可信策略对应用程序进行更新、恢复、禁止等操作。

2.3 可信配置管理模块

2.3.1 文件配置管理

可信文件列表和备份恢复文件信息是整个可信执行环境的数据中心,是可信执行环境运行的基本保证。由于其信息占用空间较大,国产TCM芯片的存储空间有限,这些文件只能存储在系统磁盘上,为了便于管理维护,文件配置管理模块通过访问控制界面向用户提供了以下功能:

图5 可信验证执行流程

(1)存储路径选择:根据用户磁盘分配情况的不同,用户可以自定义这些核心文件在磁盘上的存储路径;

(2)清除冗余信息:当应用程序卸载之后,可以通过此功能清除相应冗余内容,节省磁盘的空间;

(3)查看操作记录:追踪可信文件列表和备份恢复文件的更改操作记录,便于对执行环境安全性进行审计。

2.3.2 策略配置管理

可信安全策略模块定义了可信执行环境进行可信验证时的一些可信安全策略,用户可以根据需要自定义安全策略,简化用户在可信验证时的操作。在模块中,可以配置使用的可信安全策略如下:

(1)[HASH_ARITHMETIC=MD5|SHA1]:对于度量引擎中使用哈希算法的选择由该策略决定。决定默认状态下度量引擎执行哈希计算时使用的算法类型。

(2)[STOP_NOT_EXIST=ON|OFF]:对于不在可信文件列表中的应用程序是否允许继续执行由该策略决定。如果启用该策略,任何不在可信文件列表中的应用程序将被禁止启动;如果禁用该策略,则将决策权交由用户,由用户决定信任与否。

(3)[STOP_UNTRUSTED=ON|OFF]:对于在可信文件列表中的应用程序,当完整性度量未通过时是否允许继续执行由该策略决定。如果启用该策略,对于完整性度量未通过的应用程序将被禁止启动;如果禁用该策略,则将决策权交由用户,由用户决定信任与否。

2.3.3 TCM配置管理

TCM是整个可信执行环境运行的硬件基础,是可信执行环境能够正常运行的核心。TCM配置管理模块向用户提供交互界面,通过调用TSM提供的接口[5]实现对TCM的访问、配置和管理,具体功能有:对TCM的初始化,查看TCM工作状态、PCR值等基本信息,修改TCM的功能状态,操作对TCM进行使能、禁止、自测等。

3 实验与分析

为了验证国产自主平台下构建可信执行环境的方法,本文设计了两项实验内容:功能测试和性能测试。

实验环境软硬件配置为:操作系统为Neo Kylin_DT(2.0);内核版本为Linux 2.6.27.41;处理器选用的是龙芯3A,主频1GHZ;TCM芯片选用的是国民技术TCM。

3.1 功能测试

测试准备:由于测试中会修改应用程序的核心文件,为了不对系统造成影响,我们选用自己开发的应用程序Test作为测试程序。

测试方案:启动拦截测试。启动测试程序Test,测试可信执行环境是否可以自动拦截到该应用程序的启动加载;可信验证。替换应用程序Test的二进制执行文件,并再次执行,测试可信执行环境是否可以检测到对应用程序Test的修改。

测试结果:当第一次启动测试程序Test时,可信执行环境向用户提示发现未知应用程序,成功对其进行了拦截;信任执行应用程序Test,然后替换应用程序Test的二进制执行文件,可信执行环境向用户提示,应用程序被破坏是否继续执行,成功检测到了应用程序的变化。

结论:可信执行环境可以准确地拦截应用程序,并及时检测其变化情况,可以有效地保护应用程序的安全执行。

3.2 性能测试

测试准备:为了测试可信执行环境的性能,体现度量引擎计算的优势,需要执行应用程序的核心文件较大,为此我们选择应用程序ps作为测试程序。

测试方案:对应用程序启动影响主要源于度量引擎对应用程序核心文件哈希值的计算。执行应用程序Test和ps,对度量引擎计算哈希值的时间进行了统计记录,将其与仅用硬算法SM3计算同样数据的所需时间作对比,如表1所示。

表1 应用程序启动时间记录

从表1中可以看出可信执行环境对应用程序启动的影响较小;同时对同样大小数据的哈希值计算,通过度量引擎计算所需的时间比仅通过硬算法SM3计算所需时间缩短了很多。

结论:可信执行环境对应用程序正常启动造成的影响在可接受的范围内,使用软硬结合的哈希值计算方法,有效地提高了可信执行环境的性能。

4 结束语

本文在国产自主平台下,设计并实现了可信执行环境,解决了传统信息安全技术安全防护滞后的问题,增强了国产自主平台下对应用程序的安全保护。可信执行环境通过重载LSM框架在内核中的HOOK函数,简化实现了对应用程序的拦截;采用哈希值软硬件结合的二级计算方式计算哈希值,加快哈希值计算速度,完成对应用程序的可信验证,对应用程序的正常启动影响较小,有效地保护了国产自主平台下应用程序的安全性。

[1]Trusted Computing Group.TCG.TCG specification architecture overview version 1.4[EB/OL].http://www.trustedcomputingfroup.org/home/,2007.

[2]ZHANG Huanguo,HE Yanxiang,ZHAO Bo,et al.Research and development of the trusted computing of China[J].Communications of the CCF,2010,2010,6(9):8-14(in Chinese).[张焕国,何炎祥,赵波,等.我国可信计算研究与发展[J].中国计算机学会通讯,2010,6(9):8-14.]

[3]SHEN Changxiang,ZHANG Huanguo.Research and development of the trusted computing[J].Science China,2010,40(2):139-166(in Chinese).[沈昌祥,张焕国.可信计算的研究与发展[J].中国科学,2010,40(2):139-166.]

[4]Wright C,Cowan C,Morris J,et al.Linux security modules:General security support for the Linux kernel[C].Proc of the 11th USENIX Security Symp.San Francisco,2002:17-31.

[5]FAN Yaoxue,YU Zong.Research and design of trusted running environment based on windows[J].Computer Engineering and Design,2010,31(13):2955-2958(in Chinese).[范耀学,余综.基于Windows系统的可信执行环境的研究与设计[J].计算机工程与设计,2010,31(13):2955-2958.]

[6]FENG Dengguo,YUAN Wengong,JIN Gang.Functionality and interface specification of cryptographic support platform for trusted computing[EB/OL].http://www.oscca.gov.cn/News/200801/News_1132.htm,2007(in Chinese).[冯登国,袁文恭,金刚,等.可信计算密码支撑平台功能与接口规范[EB/OL].http://www.oscca.gov.cn/News/200801/News_1132.htm,2007.]

[7]SHE Ying,CHEN Shuyu.Research and implementation of dynamic and multiple security policies on LSM[J].Computer Engineering and Design,2007,28(17):4108-4111(in Chinese).[佘影,陈蜀宇.基于LSM的动态多策略研究与实现[J].计算机工程与设计,2007,28(17):4108-4111.]

[8]WU Xian,QIAN Peide.Building Linux security module based on LSM[J].Computer Engineering and Design,2008,29(24):6281-6284(in Chinese).[吴娴,钱培德.基于LSM框架构建Linux安全模块[J].计算机工程与设计,2008,29(24):6281-6284.]

[9]LIU Weipeng,HU Jun,LV Huijun,et al.Mandatory access control mechanism of executable program under LSM[J].Computing Engineering,2008,34(7):160-162(in Chinese).[刘威鹏,胡俊,吕辉军,等.LSM框架下可执行程序的强制访问控制机制[J].计算机工程,2008,34(7):160-162.]

[10]XU Ri,MAO Ming,GAO Xianwei.Integrity measurement and cryptographic meachanism of cryptographic support platform for trusted computing[J].Communications Technology,2009,42(4):111-113(in Chinese).[徐日,毛明,高献伟.可信计算密码支持平台完整性度量和密码机制的研究[J].通信技术,2009,42(4):111-113.]

猜你喜欢

配置管理哈希列表
汽车委托外加工零件自动化配置管理
基于特征选择的局部敏感哈希位选择算法
学习运用列表法
哈希值处理 功能全面更易用
文件哈希值处理一条龙
扩列吧
配置管理数据库运用与实现
巧用哈希数值传递文件
列表画树状图各有所长
建设CMDB任重道远