基于通用准则的可信计算支撑软件设计方法
所属栏目:应用电子技术论文
发布时间:2018-07-19 12:51:00 更新时间:2018-07-19 14:35:35
摘要: 现有的可信计算支撑软件的规范只定义了软件的功能接口,对其要达到的安全功能需求没有明确的描述,这使得可信计算支撑软件的分析和设计没有明确的安全目标. 针对这一问题,结合通用准则 CC 的思想,提出一种可信计算支撑软件的设计方法,通过分析可信计算支撑软件的安全功能需求,并按照功能类、功能族和组件的层次对其安全功能进行了划分,确定功能组件间的依赖关系,完成了可信计算支撑软件原型的设计,能实现密码支持和完整性保护等安全目标. 实验结果表明,该软件支持 TPM2. 0 的接口调用,并能够对中国密码算法 SM4 提供调用支持.
关键词: 通用准则; 可信计算平台; 可信计算支撑软件; 可信平台模块; 安全功能
0 引言
当前,全球范围内网络安全威胁和风险日益突出,沈昌祥院士提出用可信计算构筑网络安全[1]. 可信计算的基本思想体现在可信计算平台( trusted computing platform,TCP) 的设计中,先在平台中建立一个信任根,即可信平台模块( trusted platform module,TPM) ,再建立一条信任链,从信任根开始到硬件平台、可信计算支撑软件、操作系统、应用软件,逐级测量认证,从而把信任扩展到整个可信计算平台,并确保整个平台的可信[2].
可信计算支撑软件( trusted computing supporting software,TCSS) 是 TCP 的重要组成部分,它在应用软件与 TPM 之间搭建了通讯的桥梁,应用程序通过调用可信计算支撑软件的接口来使用 TPM 提供的安全功能[3].
国内外的可信计算支撑软件大多数参照可信计算组织( trusted computing group,TCG) 的可信软件栈规范,代表性的产品有: IBM 公司发布的开源软件 TrouSerS[4]、奥地利格拉茨技术大学 IAIK 开发的 Trusted Computing API for Java[5]、联想公司的 Client Security Solution8. 3[6].
现有的 TCSS 多按照 TCG 规范定义了软件的功能接口,但 TCG 规范中对 TCSS 要达到的安全功能需求和安全目标没有明确的定义. 本文在通用准则( common criteria,CC) 的基础上,结合对 TCSS 安全功能划分和实际应用需求,提出一种可信计算支撑软件的实现方案,并实现了可信计算支撑软件的原型.
1 背景知识
1. 1 可信计算支撑软件
TCG 规范中定义的可信计算支撑软件也称 TCG 软件栈( TCG software stack,TSS) ,是一种为上层的应用程序提供访问 TPM 接口的软件系统,是可信计算平台体系中必不可少的组成部分[7]. TSS 是多层次体系结构,对本地和远程的可信计算平台都能提供服务支持.
TSS 的体系结构具体可分为 TCG 服务提供层( TCG service provider,TSP) 、TCG 核心服务层( TCG core service,TCS) 和 TCG 设备驱动库 TCG device driver library,TDDL) ,各个层次都定义了规范化的函数接口. TSP 主要作为本地和远程应用的可信代理,TCS 用于提供公共服务的集合,而 TDDL 负责与 TPM 的交互. 1.
2 通用准则通用准则
CC 是国际上广泛认可的信息安全评估标准,能够为信息技术产品的安全功能要求和安全保证措施提供通用的标准[8].
CC 也可以指导具有安全功能相关 IT 产品的开发和评估过程.在 CC 的体系中,保护轮廓( protection profile,PP) 是安全性评估的依据,是对 IT 安全产品的一组安全要求的描述,是抽象层次较高的安全需求说明书. CC 发展委员会还提出了一种基于合作性保护轮廓的安全测评框架[9].
PP 有助于提高 IT 产品开发和评估过程的规范性,通过对评估对象( target of evaluation,TOE) 进行描述,以确定 TOE 的安全要求.
TOE 通常被定义为参照规范实现的软件、固件和硬件,本文研究的 TOE 为可信计算支撑软件.在开发阶段建立的安全要求对满足用户的安全目标意义重大,CC 不强制要求采用特定的开发方法和模型.
CC 指导 TOE 的开发过程是将抽象安全目标逐步细化为最终实现的过程,该过程的基础是将安全要求细化为安全目标中的 TOE 概要规范,使每个低层次的细化代表具有更为详细的设计分解,最低的抽象表示是 TOE 实现本身,每个层次的细化是更高层次的实例化[10]. 文献[11]从设计分解的角度论述了 CC 的基本评估模型,并提出了对安全功能要求进行半形式化的方法.
2 TCSS 的安全功能分析安全功能需求定义用于描述产品应该提供的安全功能,CC 为安全功能需求的描述制定了规范的类描述方式,从而保障产品开发的规范性.所有 TOE 安全功能要求从根本上均来源于对 TOE 的用途和环境的考虑,TCSS 的设计要求和规范的导出过程可分成多个层次,首先确定 TCSS 的安全环境,接着确定 TCSS 的安全目标,然后导出 TCSS 的安全要求,包括功能要求、保证要求和环境要求,最后导出安全功能规范,可以参照安全功能规范完成对 TCSS 的设计和测试.
CC 中定义了安全功能要求,用类、族和组件来表示,一个功能类包含一个或多个功能族,一个功能族又包含一个或多个组件,每个组件提供一组安全功能元素. 我们以 TCG 规范定义的 TCSS 为研究对象,TCG 服务提供层( TSP) 、TCG 核心服务层( TCS) 和 TCG 设备驱动库( TDDL) 各层次抽取出的安全功能为功能类; 每个安全功能又划分为不同的子功能模块,即对应为功能族; 每个模块有不同的接口函数,即对应组件,且接口函数间存在着相互依赖的关系.参照 TCG 可信软件栈规范满足可信计算平台的安全需求,并实现 TCSS 自身的设计功能目标,遵照不同规范实现 TCSS 的分析和设计,本文对可信计算规范进行抽取,定义出了 TCSS 的安全功能,如图 1 所示. 不同的规范中定义的函数功能接口有差异,各 TCSS 产品的实现机制会有不同,但只要 TCSS 能实现相对应的安全功能,同样能达到设计目标.下面具体分析 TCSS 的 TSP 层安全功能和相关子功能的关系. 将 TSP 划分为完整性保护、可信认证和密码支持 3 个安全功能.
TSP 的各安全功能又可分解为相关子功能,完整性保护包括 HASH 功能和 TPM 管理; 可信认证包括上下文管理、策略管理和 PCR 管理; 密码支持包括密钥管理和数据加解密. TCSS 的设计采用自顶向下方法,确定功能类和对应的功能族,再逐步求精设计相关的组件.
下面以密码支持类为例,详细描述 TCSS 的设计过程.
CC 中对密码支持类( FCS 类) 由两个功能族组成[12]: 密钥管理( FCS_CKM) 和密码运算( FCS_COP) .
参照 CC 中对安全功能类、功能族和组件的划分,对 TSP 的密码支持安全功能进行分析.
密钥管理子功能对应 FCS_CKM 功能族,解决密钥管理方面的问题; 数据加解密子功能对应 FCS_COP 功能族,与密钥在运算中的使用情况相关.
FCS_CKM 功能族包括 4 个组件: 密钥生成( FCS_CKM. 1) 、密钥分发( FCS_CKM. 2) 、密钥使用( FCS_CKM. 3) 和密钥销毁( FCS_CKM. 4) ,FCS_COP 功能族的组件为密码运算( FCS_COP. 1) . 密码支持功能各组件间的依赖关系如图 2 所示,可以看出在完成密码支持安全功能的过程中,密钥生成组件最先执行,密钥销毁组件最后执行.
密钥生成、密钥分发、密钥使用、密钥销毁和密码运算等组件中分别设计具体的功能函数.表1描述了TSP层密码支持类的部分函数功能划分.
3实验
本文可信计算支撑软件的开发平台为支持TPM2.0的Intel小型机,操作系统为Ubuntu10.04,编译器版本为GCC3.3.根据完整性保护、可信认证和密码支持等安全功能的要求设计实现了31个功能函数,该TCSS的功能函数设计是TCG规范中定义软件栈的子集,实现了核心的安全功能,同时还增加了对中国标准的加密算法SM4的调用支持.
通过对所有TCSS实现的函数接口进行功能测试,全部达到规范的功能要求,下面以对SM4算法调用的测试为例,介绍TCSS原型的工作流程.先创建主密钥(PrimaryKey),授权后再生成SM4密钥对,用私钥进行签名,公钥验证签名.图3描述了整个测试流程,其中Tspi_TPM2_CreatePrimaryKey函数的功能是产生1个主密钥,其函数测试界面如图4所示.
Tspi_TPM2_CreatePrimaryKey测试界面中相关字节的参数说明如下:
发送的数据包是十六进制的形式显示,2位数表示1个字节.下面对图中标识出的重要数据做一下说明.
1)前2个字节代表参数TPMI_ST_COMMAND_TAG的值为TPM_ST_SESSIONS=0x8002,表示命令有一个或多个连接的会话,授权值在当前的范围;
2)第7~10个字节代表参数TPM_CC的值TPM_CC_CreatePrimary=0x00000131,表示生成了主密钥;
3)第11~14个字节代表参数TPM_AUTH_HANDLE的值TPM_RH_PLATFORM=0x4000000C,表明是平台身份的密钥;
4)设置PrimaryKey密码为0x00ff,接收到TPM返回的数据,生成的句柄为0x80000000,表示为普通的临时对象,传给下一个函数Tspi_TPM2_CreateKey.
测试结果表明,接收到TPM返回的数据,平台的主密钥创建成功.
4结论
本文借鉴通用准则CC的思想,提出了一种TCSS的设计方法,在分析TCSS的安全功能需求的基础上抽取安全功能集,并确定对应的子功能和核心功能函数,结合实际应用需求实现了一种TCSS的原型.最后对已完成的TCSS相关功能函数进行了测试.实验表明:本文实现的TCSS原型能提供密码支持服务、可信认证、完整性保护等安全目标,也支持对国家密码算法SM4的调用.今后将进一步完善支持TPM2.0规范的TCSS设计工作,实现对远程应用的支持.
参考文献:
[1]沈昌祥.用可信计算构筑网络安全[J].求是,2015(20):33-34.
[2]沈昌祥,张焕国,王怀民等.可信计算的研究与发展[J].中国科学(E辑:信息科学),2010,40(2):139-166.
[3]PROUDLERG,CHENL,DALTONC.Trustedcomputingplatforms:TPM2.0incontext[M].Switzerland:Springer,2014.
[4]Internationalbusinessmachine.TrouSerS[EB/OL].(2008-10-03)[2017-05-28].http://trousers.sourceforge.net/.
[5]IAIKGrazUniversityofTechnology.TrustedcomputingAPIforJava[EB/OL].(2011-12-05)[2017-5-28].https://jcp.org/en/jsr/detail?id=321.
[6]联想集团.ThinkVantage客户端安全软件8.3[EB/OL].(2014-02-28)[2017-05-26].http://think.lenovo.com.cn/support/driver/detail.aspx?docID=DR1256885488596.
[7]Trustedcomputinggroup.TCGsoftwarestack(TSS)specifiction,version1.2,errataA[EB/OL].(2009-03-01)[2017-05-21].http://www.trustedcomputinggroup.org/resources/tcg_software_stack_tss_specification.
[8]Commoncriteriaforinformationtechnologysecurityevaluation,part1introductionandgeneralmodel,Version3.1,revision5[S].Commoncriteriarecognitionarrangementmanagementcommittee,2017:11-12.
[9]CCRAManagementCommittee.CCRA:arrangementontherecognitionofcommoncriteriacertificatesinthefieldofinformationtechnologysecurity[EB/OL].(2014-07-02)[2017-05-28].http://www.commoncriteriaportal.org/ccra/.
[10]中国国家标准化管理委员会.GB/T18336.1—2008,信息技术安全技术信息技术安全性评估准则第1部分:简介和一般模型[S].北京:中国标准出版社,2008:11-12.
[11]石竑松,高金萍,贾炜,等.CC标准中安全架构与策略模型的分析方法[J].清华大学学报(自然科学版),2016,56(5):493-498.
[12]Commoncriteriaforinformationtechnologysecurityevaluation,part2securityfunctionalcomponents,Version3.1,revision5[S].Commoncriteriarecognitionarrangementmanagementcommittee,2017:48-51.