工程科学与技术   2020, Vol. 52 Issue (3): 141-149
针对虚拟可信平台模块的国密算法扩展技术研究
陈兴蜀1,2, 蒋超1,2, 王伟2,3, 金鑫2,3, 兰晓1,2     
1. 四川大学 网络空间安全学院,四川 成都 610065;
2. 四川大学 网络空间安全研究院,四川 成都 610065;
3. 四川大学 计算机学院,四川 成都 610065
基金项目: 国家自然科学基金项目(61802270;61802271);中央高校基本科研业务费专项资金(SCU2018D018;SCU2018D022)
摘要: 为了规避使用外国密码算法带来的法律风险,满足中国《商用密码管理条例》的合规性要求,响应网络空间安全的自主可控要求,促进虚拟可信计算技术在国内云计算业务的大规模应用,本文对虚拟可信平台模块(virtual trusted platform module,vTPM)和虚拟机信任链相关组件添加了对中国国家商用密码算法(国密算法)的支持。首先,在vTPM中添加对密码算法工具包GmSSL(GM/T secure sockets layer)中散列密码算法(SM3)和对称密码算法(SM4)的调用接口,并利用GmSSL的大数运算模块实现国密算法中的非对称密码算法(SM2)的调用接口,从而为上层应用提供基于国密算法的可信计算功能。其次,在虚拟机信任链相关组件中添加SM3算法的实现代码,达成建立基于国密算法的虚拟机信任链的目标。最后,验证vTPM中调用接口的正确性和建立的虚拟机信任链的有效性,对比基于SM3算法和SHA–1算法虚拟机信任链的虚拟机开机时间。实验结果表明,添加的调用接口正确且有效,并且和基于SHA–1算法虚拟机信任链的虚拟机相比,基于SM3算法虚拟机信任链的虚拟机开机时间只增加3%,在安全性提升的同时其性能损耗在可接受范围。
关键词: 云计算    可信计算    虚拟可信平台模块    虚拟机信任链    
Research on the Extension of Chinese Commercial Cryptographic Algorithms for Virtual Trusted Platform Module
CHEN Xingshu1,2, JIANG Chao1,2, WANG Wei2,3, JIN Xin2,3, LAN Xiao1,2     
1. College of Cybersecurity, Sichuan Univ., Chengdu 610065, China;
2. Cybersecurity Research Inst., Sichuan Univ., Chengdu 610065, China;
3. College of Computer Sci., Sichuan Univ., Chengdu 610065, China
Abstract: In order to avoid the legal risks of using foreign countries’ cryptographic algorithms and address the compliance requirements of the regulations on commercial cryptographic management of China, the support of Chinese commercial cryptographic algorithms (national cryptographic algorithms) was added into the virtual trusted platform module (vTPM); simultaneously, to respond to the autonomous and controllable requirements of cybersecurity and promote the large-scale application of virtual trusted computing technology in the domestic cloud computing business the related components of the virtual trusted chain were transformed. Firstly, the interfaces of the Hash cryptographic algorithm SM3 and the symmetric cryptographic algorithm SM4 in the cryptographic toolkit GmSSL (GM/T secure socket layer) were added to vTPM, and the asymmetric cryptographic algorithm SM2 was implemented by the big number arithmetic module of GmSSL, which provides the trusted computing functions based on the national cryptographic algorithms for upper-layer applications. Secondly, the implementation for the SM3 algorithm was added into the related components so that the virtual trusted chain based on the national cryptographic algorithm can be established. Finally, the correctness of the interfaces and the effectiveness of the virtual trusted chain were verified, and the boot time of the virtual machine based on the SM3-algorithm and SHA–1-algorithm virtual trusted chain were compared. The experiments show that the interfaces added are correct and effective, and compared with the virtual machine based on the SHA–1-algorithm virtual trusted chain, the boot time of the one based on the SM3-algorithm virtual trusted chain only increases by 3%, of which the security is improved while its performance consumption is acceptable.
Key words: cloud computing    trusted computing    virtual trusted platform module    virtual trusted chain    

可信计算技术以硬件安全芯片可信平台模块TPM为可信根,度量、存储和报告关键系统组件的完整性,通过构建信任链保障系统运行环境的安全可信[1-3]。随着云计算的发展,IBM的Berger等[4]于2006年提出了虚拟可信平台模块(virtual trusted platform module,vTPM),实现并开源基于TPM1.2规范[5]和TPM2.0规范[6]的vTPM模拟函数库Libtpms[7],实现了可信计算技术向云环境的扩展。

但是上述实现的vTPM缺少国密算法支持,不能向上层应用提供国密算法的加解密服务;且虚拟机信任链建立过程中的其他组件也缺少国密算法支持。因此,为了避免由于使用外国密码算法带来的法律风险[8],满足中国《商用密码管理条例》的合规性要求[9],响应网络空间安全的自主可控要求,以及促进虚拟可信计算技术在国内云计算业务的大规模应用,有必要对vTPM及虚拟机信任链建立涉及的各组件添加国密算法支持。

国民技术股份有限公司最新的TPM2.0芯片[10]已集成了国密算法SM2/SM3/SM4,但TPM2.0软件栈(TPM2.0 software stack,TSS2.0)[11]尚不支持SM2/SM3/SM4算法。Hua等[12]实现了将散列算法SM3添加到ARM TrustZone的可信执行环境(trusted execute environment,TEE)中,但不能为上层应用提供的基于国密算法的加解密服务。Wang等[13]在性能测试阶段使用了其在vTPM2.0中实现的SM2算法,但没有给出具体实现方案。沈昌祥等[14]提出了基于国产密码体系的可信计算体系框架,但整个框架以可信平台控制模块(trusted platform control module,TPCM)为可信根,而目前暂时缺少TPCM的虚拟化实现方案。

TCG(trusted computing group)制定的TPM1.2规范不支持国密算法,而在TPM2.0规范中预留了一些算法的标志符,包括中国国家商用密码算法中SM2/SM3/SM4的标志符,因此可以直接利用这些标志符将新的算法添加到vTPM2.0中。由北京大学密码学研究组开发维护的支持国密算法和标准的开源密码算法工具包OpenSSL分支GmSSL[15]集成了SM2、SM3和SM4等国家商用密码算法。2018年,国际标准化组织将国家商用密码SM2/SM3/SM9纳入了ISO/IEC国际标准[16],随后OpenSSL在其正式版本1.1.1中添加了SM2/SM3/SM4的实现[17]

综上,针对上述不足之处,本文利用GmSSL实现了对vTPM2.0及虚拟机信任链相关组件的国密算法扩展,即:1)分析QEMU–KVM(quick EMUlator,kernel-based virtual machine)环境下vTPM2.0的实现方法和工作流程,实现了vTPM2.0的3种国密算法的扩展;2)分析虚拟机信任链的建立流程,实现了基于SM3国密算法的信任链度量方法以及基于SM3的虚拟机平台配置寄存器(virtual platform configuration register,vPCR)的扩展方法。

1 背景知识 1.1 vTPM的3种虚拟化方式

KVM虚拟化平台的TPM虚拟化方法分为3类:直接调用硬件TPM芯片的直通式Passthrough vTPM;以外围设备(peripheral component interconnect,PCI)方式模拟的PCI vTPM;以用户空间字符设备(character devices in USErspace,CUSE)方式模拟的CUSE vTPM[18-19]

Passthrough vTPM允许某个虚拟机直接使用物理TPM芯片,具有较好的可信性[18]。但其同一时刻只允许一个虚拟机虚拟机同TPM芯片交互,存在硬件资源独占等缺点。PCI vTPM基于Libtpms函数库模拟硬件TPM芯片的所有功能,可以同时为多个虚拟机提供单独的vTPM设备。但这种方式是在QEMU进程的地址空间中加载Libtpms函数库,增大了可信计算基(trusted computing base,TCB)的规模。CUSE vTPM同样依赖于Libtpms来模拟vTPM,不同之处在于CUSE vTPM在QEMU进程地址空间外部模拟TPM设备,使得QEMU进程中只需加载CUSE vTPM驱动即可。

由于工程条件限制,本文仅对以外围设备方式模拟的PCI vTPM实现国密算法扩展。

1.2 虚拟机信任链的两种构建方式

虚拟可信计算中信任链分为两种:基于vPCR寄存器和完整性度量机制建立信任链[20],基于数字证书间签名机制建立的证书信任链[21]

第1种方式能采集并验证信任链上各组件的完整性状态;第2种方式可以保障vTPM实例中密钥和证书等私密信息的安全。实际中通常两种方式配合使用[19],本研究面向第1种构建信任链方式。

2 国密算法扩展的设计 2.1 总体设计

图1所示,经过对Libtpms的分析,将其整体抽象为:授权模块、操作分类模块、统一密码算法管理模块和其他模块。其中:授权模块鉴别TSS2.0下发的命令是否拥有执行权限;操作分类模块识别具体的操作类型,包含密码运算操作、PCR相关操作、远程证明操作等类型;统一密码算法管理模块解析命令流中具体的密码算法标志符,依据标志调用OpenSSL/GmSSL相应的密码算法引擎。

图1 vTPM国密算法扩展设计 Fig. 1 Design of the vTPM extended by SM algorithms

为实现vTPM的国密算法的扩展,需要在Hash密码算法子模块中添加对SM3引擎的调用接口;在对称密码算法子模块中添加对SM4引擎的调用接口;而在非对称密码算法子模块,则需先利用GmSSL中的BigNum大数运算模块实现SM2引擎,然后在其ECC引擎中添加SM2签名框架类型以及签名值的响应结果编码接口(详见第3.1.3节)。

基于作者过去的工作[22-23],为实现对虚拟机信任链的国密算法扩展,需对相关组件进行改造,为其添加基于SM3算法的度量操作和对SM3 Bank vPCR扩展操作的相关代码,包括:可信BIOS模拟程序SeaBIOS、可信操作系统启动引导程序TrustedGrub和虚拟机操作系统(virtual machine OS,vmOS)的完整性度量框架(integrity measurement architecture,IMA)。

同时,需改写TSS2.0软件栈,加入包含国密算法参数的命令。使得虚拟机中应用程序可以和PCI vTPM交互,实现基于SM3算法的度量操作和对SM3 Bank vPCR的扩展操作,以及基于SM2和SM4算法的加解密操作。

2.2 扩展后vTPM的工作流程 2.2.1 向上层提供加解密服务

TPM向上层应用提供加解密服务的具体流程如下:

1)在虚拟机中TSS2.0按照TPM2.0标准构造命令,编码为TPM2.0命令流;

2)TSS2.0将TPM2.0命令流发送给内核中的TPM_TIS驱动,TPM_TIS驱动与宿主机QEMU进程地址空间中的PCI vTPM设备交互,PCI vTPM调用Libtpms函数库处理TPM命令流;

3)Libtpms的授权模块检查TPM命令流会话信息,鉴别操作权限;

4)操作分类模块识别具体的操作类型,调用相应的子模块处理业务;

5)如果是操作涉及密码运算,由统一密码管理模块解析TPM命令流,提取密码算法标志符,调用相应的密码算法接口;再由相应密码算法接口的算法引擎选择器SELECT选择具体的算法引擎;

6)密码运算执行完成后,将结果返回给统一密码算法管理模块,由其将结果编码为TPM响应流,然后依次返回给上层模块,最终返回TSS2.0,将结果提供给用户层应用。

2.2.2 虚拟机信任链的建立

基于国密算法的虚拟机信任链建立过程如下:

1)位于SeaBIOS中的核心可信度量根(core root of trust for measurement,CRTM)是系统启动后执行的第1段代码。它执行最初的可信度量操作,引导vTPM开始工作,验证SeaBIOS代码的完整性,完成度量后保存度量日志到biosSML(bios stored measurement log)并将控制权移交给SeaBIOS。

2)SeaBIOS启动后,对TrustedGrub的代码分两个阶段进行度量,完成度量后保存度量日志到biosSML,并将控制权移交给TrustedGrub。

3)TrustedGrub启动后,对操作系统内核的代码进行度量,完成度量后保存度量日志到biosSML,并启动操作系统。

4)当加载应用程序、动态链接库或者内核模块时,由Linux内核完整性度量架构IMA度量其代码段完整性,完成度量后保存日志到imaSML。

5)上层应用通过TSS2.0,直接调用vTPM完成度量和vPCR扩展操作。至此,完成虚拟机中信任链的建立。

整个过程中由SM3算法替代原来的SHA–1算法,完成对各组件的完整性度量操作。

3 国密算法扩展的实现

如第2.2节所述,信任链建立涉及的主要组件包括vTPM、Seabios、TrustedGrub和Linux内核中的IMA,其中,vTPM支持基于SHA–1和SHA–256的完整性度量,其余组件只支持基于SHA–1的完整性度量。

3.1 vTPM国密算法扩展的实现 3.1.1 SM3

《SM3密码杂凑算法》(GM/T 0004—2012)[24]规定SM3算法输出的长度为32 Byte,同SHA–256算法的输出长度一致,因此,在Libtpms中SM3可以直接修改使用SHA–256的数据结构TPM2B_MAX_BUFFER,其支持的最大消息长度为1 024 Byte。

图2所示,向Libtpms函数库统一密码算法管理模块的Hash密码算法子模块注册SM3算法工作流程。图2中:sm3_init、sm3_update、sm3_final是GmSSL定义的SM3密码算法接口;sm3_init根据GM/T标准中推荐的摘要值初始化sm3_ctx_t结构体;sm3_update接收一定长度的消息,以64 Byte为单位块对消息进行分块Hash运算;sm3_final执行最后一次单位块Hash运算并返回最终运算结果。

图2 SM3引擎工作流程 Fig. 2 Workflow of SM3

3.1.2 SMS4

SMS4是中国无线局网标准中采用的分组密码算法标准,后被国家商用密码标准采用,因此又被称为SM4国家商用密码算法[25]。SMS4分组密码算法的秘钥长度和分组长度都是128 bit,同AES–128的秘钥长度一致。在Libtpms中,各种对称密码算法的输入参数和输出结果都使用统一的数据结构存储,因此在添加SMS4密码算法的时只需要在对称密码选择器中添加SMS4密码算法的实现接口即可。

图3所示,向Libtpms函数库对称加密算法模块的子模块加密算法选择器SELECT注册SMS4密码算法工作流程。调用SMS4对称加密算法接口时,会先调用sms4_set_encrypt_key设置加密密钥或者调用sms4_set_decrypt_key设置解密密钥,接着调用sms4_encrypt或者sms4_decrypt完成加解密操作。结果保存到数据结构{TPM2B_MAX_BUFFER,TPM2B_IV},其中,前者代表明文或者密文,后者代表加解密需要使用的初始化向量。

图3 SMS4引擎工作流程 Fig. 3 Workflow of SMS4

3.1.3 SM2

Libtpms函数库的统一密码管理模块将非对称加密算法分为3类:RSA、HMAC与ECC,其中,ECC密码算法有多种实现的方式,每种实现方式均有自己独特的CurveID标志。TPM2.0标准规定SM2椭圆曲线密码算法的CurveID是0x1B,并规定了SM2签名运算的函数原型、SM2签名验证运算的函数原型、SM2密码交换算法的函数原型,但是在标准中并没有启用该部分的实现,并且没有提供SM2签名框架类型以及签名值的响应结果编码接口Marshal。因此,基于TPM2.0标准的Libtpms并未实现上述标准。

按照TPM2.0标准中的定义,可以借助GmSSL函数库的BigNum大数运算模块实现SM2密码算法接口;然后,在ECC算法接口的SWITCH–CASE结构中添加SM2密码算法接口的调用路径即可;最后,通过添加SM2密码算法的签名框架类型编码接口和签名值的响应结果编码接口,对运算结果执行编码操作。

SM2引擎工作流程如图4所示。

图4 SM2引擎工作流程 Fig. 4 Workflow of SM2

添加SM2算法引擎后,其具体执行流程如下:

1)非对称加密算法子模块提取具体的密码算法标志,如果是椭圆曲线密码算法,则将TPM命令流传递至ECC算法接口。

2)ECC算法接口解析TPM命令流,提取ECC签名框架类型标志,如果是SM2,则将TPM命令流传递给SM2密码算法接口。

3)SM2密码算法接口使用TPM2B_DIGEST结构体来保存签名操作的待签名消息或签名验证操作的待验证消息,使用BigNum结构体来存储签名值〈RS〉。如果操作是签名运算,则调用SM2签名运算函数完成运算;如果操作是签名验证运算,则调用SM2签名验证运算函数完成运算。然后将结果返回给SM2签名框架类型编码接口。

4)SM2签名框架类型编码接口对结果中的签名值字段、签名框架类型字段进行编码,并返回给响应结果编码接口。

5)响应结果编码接口将响应结果编码为TPM响应流,返回给上层模块。

3.2 信任链中组件的国密算法扩展实现 3.2.1 Seabios

QEMU按PCI设备模拟vTPM,并利用内存映射I/O(memory mapping I/O,MMIO)机制将vTPM设备映射到虚拟机的物理地址空间,于是对vTPM设备的I/O操作转化为对这块物理内存的读写操作。SeaBIOS根据TPM2.0标准规定的硬件I/O端口与MMIO映射的物理地址之间的转换方法,通过读写虚拟机物理内存的方式向vTPM发送命令或者接收结果。同时,SeaBIOS开辟一段物理内存用来保存度量日志biosSML。

在SeaBIOS中建立基于国密算法信任链的方法为:1)在SeaBIOS中添加SM3算法引擎,替换原来的SHA–1算法;2)更改SeaBIOS的vPCR扩展接口,将度量值扩展到SM3 Bank vPCR;3)按格式将记录保存到度量日志biosSML中,并移交控制权给被度量组件。

3.2.2 TrustedGrub

由于x86操作系统的启动需要由实模式转换到保护模式,其启动过程分为两个阶段。TrustedGrub启动第1阶段中可信链的建立,依赖于SeaBIOS提供的服务。SeaBIOS通过INT 0x1A中断服务的0xBB子服务功能号向上层软件TrustedGrub提供vPCR操作、SeaBIOS日志记录的功能。SeaBIOS共向上层软件提供了8种功能接口[26],对应的EAX(extended accumulator register)寄存器值和描述如表1所示。

表1 SeaBIOS提供的功能接口描述 Tab. 1 Interface Description of the SeaBIOS

表1可知:1)阶段1直接使用SeaBIOS中的TCG_CompactHashLogExtendEvent接口对此段代码进行代码段度量、vPCR扩展操作。2)阶段2的代码存储在磁盘的其他位置,存储空间不受限制。原TrustedGrub先使用SHA–1算法完成度量操作,然后调用接口TCG_HashLogExtendEvent将度量结果扩展到vPCR。通过在TrustedGrub中添加SM3密码算法引擎,替换阶段2代码使用的SHA–1算法执行度量操作,可以确保阶段2的代码建立起基于国密算法的信任链。

3.2.3 IMA

虚拟机内核中执行度量操作的组件是完整性度量框架IMA。IMA执行过程为:1)IMA拦截进程/模块A的加载,然后默认使用SHA–1密码算法对进程/模块A的代码段进行度量,生成128 bit的度量结果;2)IMA调用自身的PCR扩展接口ima_pcr_extend将度量值扩展到vTPM的SHA–1 Bank vPCR10,然后按格式〈10,度量值,进程/模块A 名字〉将记录写入日志imaSML;3)IMA释放拦截,恢复进程/模块A的加载。

为保证虚拟机内核可以建立基于国密算法的信任链,采取措施如下:1)在IMA中添加SM3密码算法引擎,替换IMA默认使用的SHA–1密码算法;2)对IMA的vPCR扩展接口ima_pcr_extend进行逻辑调整,使其将度量值扩展到vTPM的SM3 Bank vPCR10;3)调整IMA的日志格式,使其能够保存SM3密码算法的度量记录。

3.3 vTPM中国密算法的应用拓展

图5所示,在Libtpms中添加SM3密码算法后,会对其他TPM命令产生影响。

图5 vTPM中国密算法的应用拓展 Fig. 5 Application expansion of the vTPM extended by SM algorithms

3.3.1 远程证明

TPM2_Quote命令使用AIK(attestation identity key)身份证明密钥的私钥对远程证明过程中挑战者发来的随机值Nonce进行签名,签名操作执行前,将Nonce与TPM芯片的某个或者某些PCR值进行绑定,绑定操作即Hash运算。如果SM3密码算法添加成功,则可以在执行TPM2_Quote时使用SM3密码算法进行Hash运算,为远程证明过程添加国密算法支持。

3.3.2 PCR扩展操作

PCR是一种只支持扩展操作(即Hash运算)的寄存器,包括命令TPM2_PCR_Read和TPM2_PCR_Extend。由于存在多种Hash密码算法,TPM2.0标准为每种Hash算法都提供了一组特定的PCR,每种Hash算法的PCR组合为一种Bank。如果SM3密码算法添加成功,则可以启用SM3 Bank PCR。

4 功能测试与性能分析

实验在QEMU–KVM虚拟化环境下实现。宿主机配置为:Ubuntu 14.04.05 x86_64、kernel 4.10.1、QEMU 2.3.0和Libtpms2.0,CPU为Intel®Core™i5–6400,8 GB内存,1 TB磁盘,具备TPM2.0芯片。虚拟机配置为:CentOS 7.0 x86_64、kernel 3.10.0–327和TSS2.0,CPU为QEMU Virtual CPU,1 GB内存,20 GB磁盘,具备vTPM2.0。

4.1 功能测试 4.1.1 vTPM2.0国密算法接口的正确性

1)对SM3密码算法接口的测试

分别使用GmSSL函数库、添加了国密算法支持的vTPM2.0对同一段消息进行哈希计算,比较计算结果。

图6所示,消息设定为“0123456789”。图6(a)是利用GmSSL函数库对该消息的Hash计算结果,图6(b)是在虚拟机内使用软件栈TSS2.0调用vTPM2.0对该消息的Hash计算结果,执行的命令是TPM2_Hash。结果显示,两者一致。

图6 vTPM2.0的SM3算法测试 Fig. 6 Test result of SM3 on vTPM2.0

添加SM3密码算法后,还将影响vTPM2.0的vPCR、密钥的属性、TPM2_Quote等操作。如图7所示,图7(a)显示vTPM2.0中增加了SM3 Bank vPCR,图7(b)中密钥的属性显示可以使用SM3密码算法进行Hash运算,图7(c)显示TPM2_Quote操作支持调用SM3密码算法。

图7 vTPM2.0中加入SM3密码算法的影响 Fig. 7 Influences on vTPM2.0 added SM3

综上所述,vTPM2.0中对SM3算法的封装接口可以正确表达,表明国密算法SM3添加成功。

2)对SM4密码算法接口的测试

首先,使用命令TPM2_Create和TPM2_Load生成SM4密码算法的密钥;然后,执行TPM2_EncryptDecrypt命令,利用该密钥进行加解密操作。

图8所示,结果表明vTPM2.0添加国密算法SM4成功。

图8 vTPM2.0的SM4算法测试 Fig. 8 Test for SM4 on vTPM2.0

3)对SM2密码算法接口的测试

首先,使用TPM2_Create和TPM2_Load命令生成并加载SM2密码算法的密钥;然后,使用TPM2_Sign和TPM2_VerifySignature命令进行签名和验证操作。如图9所示,结果表明vTPM2.0添加SM2国密算法成功。

图9 vTPM2.0的SM2算法测试 Fig. 9 Test for SM2 on vTPM2.0

4.1.2 国密算法虚拟机信任链的有效性

1)对vPCR扩展操作的测试

图10所示,表明vTPM2.0支持SM3 Bank vPCR的扩展操作。

图10 vTPM2.0支持SM3 Bank vPCR扩展操作 Fig. 10 vPCR extension operation supported by SM3 on vTPM2.0

2)对度量日志的测试

图11所示,图11(a)表示biosSML日志内容,图11(b)表示imaSML日志内容。组件SeaBIOS、TrustGRUB和vmOS中的完整性度量框架IMA都使用了输出长度为256 bit的SM3算法进行度量和扩展操作,而且日志包含了对应的vPCR下标、度量结果和被度量对象的标志3项内容。

图11 组件度量日志 Fig. 11 Components measurement log

综上所述,基于国密算法的虚拟机信任链建立成功。

4.2 性能分析 4.2.1 vTPM2.0国密算法运算性能测试

测试主要包括3种运算:SM2的签名运算和签名验证运算、SM3的Hash运算、SM4的加解密运算。每种运算均通过两种方式比较:1)通过TSS2.0调用vTPM2.0进行运算;2)直接通过GmSSL函数库进行运算。总计6项测试。

测试方法为:对长度为1 024 Byte的消息进行运算,每项测试各执行1 000次,取运算结果的均值。调用GmSSL和vTPM2.0的国密算法引擎进行运算的性能开销的最终对比结果如表2所示。

表2 vTPM2.0的国密算法性能比较 Tab. 2 Performance comparison of SM algorithms on vTPM2.0

表2中数据可以得出:通过调用vTPM2.0中国密算法引擎进行运算的时间开销,是直接利用GmSSL进行运算的时间开销的3~4倍。因为TSS2.0的密钥加载、计算和卸载等工作流程会导致每次密码运算都由多条TPM命令组成,而每条TPM命令都会导致虚拟机VM_EXIT和QEMU捕获异常转交vTPM2.0等时间开销较大的处理过程。

4.2.2 虚拟机开机时间测试

定义虚拟机开机时间为:从QEMU进程开始执行的一刻开始,到虚拟机内部的network网络服务进程启动的一刻为止。

在同一台宿主机上设置3种虚拟机,保证3种虚拟机的资源、系统版本、系统内环境的一致,3种虚拟机分别为:基于国密算法虚拟机信任链的VM–vTPM–SM*、基于SHA–1算法虚拟机信任链的VM–vTPM和无vTPM支持的普通虚拟机VM。其中,VM–vTPM–SM*和VM–vTPM均开启了SeaBIOS、TrustedGrub、IMA的完整性度量功能,并在虚拟机启动过程中建立虚拟机信任链。每种虚拟机重复启动20次,最后取开机时间的均值,得到结果为:1)VM–vTPM–SM*平均开机时间为34 s;2)VM–vTPM平均开机时间为33 s;3)VM平均开机时间为26 s。

由开机时间测试可以得出:不管基于SM3还是SHA–1,虚拟机信任链的建立都会影响虚拟机开机时间;VM–vTPM–SM*比VM–vTPM的开机时间增加约3%。SHA–1算法生成的消息摘要为160 bit,而SM3算法生成的消息摘要为256 bit,前文涉及的度量和扩展操作均为Hash运算。即国密算法扩展后的虚拟机信任链在安全性提升的同时,其性能开销在可接受范围内。

5 结束语

为解决虚拟可信平台模块vTPM缺少国密算法支持和虚拟机不能建立基于国密算法信任链的问题,本文提出了一种对vTPM和虚拟机信任链国密算法扩展的方法,包括两个方面:一是,通过GmSSL对PCI vTPM添加国密算法的支持;二是,对虚拟机信任链所涉及组件进行国密算法改造。实验表明,vTPM经扩展后,不仅能提供基于国密算法的加解密服务,也能有效建立起基于国密算法的虚拟机信任链。在下一步研究中,将完成对以用户空间字符设备方式模拟的CUSE vTPM的国密算法扩展。

参考文献
[1]
Feng Dengguo,Qin Yu. Research on attestation method for trust computing environment[J]. Chinese Journal of Computers, 2008, 31(9): 1640-1652. [冯登国,秦宇. 可信计算环境证明方法研究[J]. 计算机学报, 2008, 31(9): 1640-1652. DOI:10.3321/j.issn:0254-4164.2008.09.017]
[2]
Zhou Yunting,Deng Maolin,Chong Yuhai,et al.Research and design of trusted computing platform[C]//Proceedings of the 2nd International Conference on Advances in Mechanical Engineering and Industrial Informatics (AMEII 2016).Beijing:Atlantis Press,2016:1183–1188.
[3]
Ando M,Guttman J D,Papaleo A R,et al.Hash-based TPM signatures for the quantum world[M]//Applied Cryptography and Network Security.Cham:Springer,2016:77–94.
[4]
Berger S,Cáceres R,Goldman K A,et al.vTPM:Virtualizing the trusted platform module[C]//Proceedings of the 15th conference on USENIX Security Symposium(USENIX–SS’06).Berkeley:USENIX Association,2006:Article 21.
[5]
TCG.TPM main part 2:TPM structures[EB/OL].(2011–03–01)[2019–06–11].https://trustedcomputinggroup.org/wp-content/uploads/TPM-Main-Part-2-TPM-Structures_v1.2_rev116_01032011.pdf
[6]
[7]
Berger S.Libtpms[CP/OL].(2017–07–24)[2019–06–11].https://github.com/stefanberger/libtpms.
[8]
The United States Department of Commerce,Bureau of Industry and Security (BIS).Subchapter C—Export administration regulations[EB/OL].[2019–06–11].https://www.govinfo.gov/content/pkg/CFR-2012-title15-vol2/pdf/CFR-2012-title15-vol2-subtitleB-chapVII-subchapC.pdf.
[9]
国家密码管理局.商用密码管理条例[EB/OL].(1999–10–07)[2019–08–30].http://www.oscca.gov.cn/sca/xxgk/1999-10/07/content_1002578.shtml.
[10]
Nationz Technologies Inc.Z32H320TC—Trusted platform module 2.0[EB/OL].[2019–06–11].http://docplayer.net/74214290-Z32h320tc-trusted-platform-module-2-0.html.
[11]
Intel.Linux TPM2 & TSS2 software[CP/OL].(2018–10–02)[2019–06–11].https://github.com/tpm2-software/tpm2-tss.
[12]
Hua Z,Gu J,Xia Y,et al.vTZ:Virtualizing ARM TrustZone[C]//26th USENIX Security Symposium (USENIXSecurity 17).Vancouver:USENIX,2017:541–556.
[13]
Wang Juan,Xiao Feng,Huang Jianwei,et al.A security-enhanced vTPM 2.0 for cloud computing[M]//Information and Communications Security.Cham:Springer,2018:557–569.
[14]
Shen Changxiang,Gong Bei. The innovation of trusted computing based on the domestic cryptography[J]. Journal of Cryptologic Research, 2015, 2(5): 381-389. [沈昌祥,公备. 基于国产密码体系的可信计算体系框架[J]. 密码学报, 2015, 2(5): 381-389. DOI:10.13868/j.cnki.jcr.000087]
[15]
Guan Z.GmSSL[CP/OL].(2018–10–25)[2019–06–11].https://github.com/guanzhi/GmSSL/.
[16]
国家密码管理局.我国SM2/3/9密码算法正式成为ISO/IEC国际标准[EB/OL].(2018–11–22)[2019–06–11].http://www.oscca.gov.cn/sca/xwdt/2018-11/22/content_1039430.shtml.
[17]
OpenSSL.Changelog[EB/OL].(2018–09–11)[2019–06–11].https://www.openssl.org/news/changelog.html#x3.
[18]
He Xinfeng,Tian Junfeng,Liu Fanming. Survey on trusted cloud platform technology[J]. Journal on Communications, 2019, 40(2): 154-163. [何欣枫,田俊峰,刘凡鸣. 可信云平台技术综述[J]. 通信学报, 2019, 40(2): 154-163. DOI:10.11959/j.issn.1000-436x.2019035]
[19]
Berger S,Goldman K,Pendarakis D,et al.Scalable attestation:A step toward secure and trusted clouds[C]//Proceedings of the 2015 IEEE International Conference on Cloud Engineering.Tempe:IEEE,2015:185–194.
[20]
Qi Neng,Tan Liang. Trust chain model with waterfall characteristic based on trusted virtualization platform[J]. Journal of Computer Applications, 2018, 38(2): 327-336. [齐能,谭良. 具有瀑布特征的可信虚拟平台信任链模型[J]. 计算机应用, 2018, 38(2): 327-336. DOI:10.11772/j.issn.1001-9081.2017082159]
[21]
Sun Haonan,He Rongyu.Certification and remote attestation methods of the eTPM trusted cloud[C]//Proceedings of the 8th International Conference on Communication and Network Security(ICCNS 2018).New York:ACM,2018:42–49.
[22]
Jin Xin,Wang Qixu,Li Xiang,et al. Cloud virtual machine lifecycle security framework based on trusted computing[J]. Tsinghua Science and Technology, 2019, 24(5): 520-534. DOI:10.26599/tst.2018.9010129
[23]
Chen Xingshu,Wang Wei,Jin Xin. Label-based protection scheme of vTPM secret[J]. Journal on Communications, 2018, 39(11): 170-180. [陈兴蜀,王伟,金鑫. 基于标签的vTPM私密信息保护方案[J]. 通信学报, 2018, 39(11): 170-180. DOI:10.11959/j.issn.1000-436x.2018242]
[24]
国家密码管理局.SM3密码杂凑算法:GM/T 0004—2012[S/OL].北京:中国标准出版社,2012[2019–06–11].http://www.gmbz.org.cn/main/viewfile/20180108023812835219.html.
[25]
国家密码管理局.SM4分组密码算法:GM/T 0002—2012[S/OL].北京:中国标准出版社,2012[2019–06–11].http://www.gmbz.org.cn/main/viewfile/20180108015408199368.html.
[26]
TCG.TCG PC client specific implementation specification for conventional BIOS[EB/OL].(2012–02–24)[2019–06–11].https://www.trustedcomputinggroup.org/wp-content/uploads/TCG_PCClientImplementation_1-21_1_00.pdf.