TCM平台中用户密钥生成的兼容性研究及仿真实现
2020-01-16张换梅
文/张换梅
可信密码模块(Trusted Cryptography Module, TCM)是基于我国自主密码算法的另外一种形式的TPM。作为可信计算密码支撑平台必备的关键基础部件,为可信计算平台提供密码运算功能,具有受保护的存储空间。TCM中与用户相关的密钥涉及对称密钥和非对称密钥,由于可信软件栈TSS为TCG针对TPM所设计,只提供了一种密钥(RSA密钥)创建服务接口,对TCM同时实现两种密钥创建服务的兼容性有所阻碍。
1 TCM的密码算法与密钥
1.1 密码算法
在TCM中,密码相关的部件有SMS4引擎、SM2(ECC)引擎、SM3引擎、随机数产生器、HMAC引擎等,同时也提供了用于保障安全通信与授权数据验证的密码协议。TCM平台密钥采用了对称密码算法SMS4和非对称密码算法SM2(ECC)。
1.2 TCM的密钥
TCM的密钥体系定义了五种密钥类型。
(1)密码模块密钥(EK) 非对称密钥,可信密码模块的初始密钥,由厂商生成。
(2)平台身份密钥(PIK) 为256位的SM2密钥,可信密码模块的身份密钥。必须在TCM内部生成。
(3)平台加密密钥(PEK)为256位的SM2密钥,由密钥管理中心KMC生成。
(4)存 储 主 密 钥(SMK),为128位SMS4对称密钥,用于保护平台身份密钥和用户密钥的主密钥。只能在TCM内部生成。
(5)用户密钥(User Key,UK),可以是对称密钥也可以是非对称密钥,用于实现用户所需的密码功能,包括保密性、完整性保护和身份认证等。
2 UK生成方案
UK的生成通过调用TCM_CreateWrapKey来创建用户密钥,包括存储密钥、签名密钥并设置相应的授权数据。
但TCM同时支持非对称算法SM2与对称算法SMS4。TCM的一次服务响应只能根据用户需求创建一种密钥。TCM可以根据用户的需求生成两种密钥:使用SM2算法产生非对称密钥,然后用父密钥加密该子密钥进行安全存储;或者使用SMS4算法产生对称密钥并用父密钥对其加密存储。由于可信软件栈TSS为TCG针对TPM所设计,只提供了一个密钥创建服务接口,对TCM同时实现两种密钥创建服务的兼容性有所阻碍。针对这种情况,本文采用以下解决方案:
图1:UK生成流程图
在TSS重构过程中,不添加密钥创建接口,在应用程序中增设选择性变量Flag,执行如下代码:
由于密钥创建的流程相对复杂,选择性变量Flag需要传入多个子函数,需要在若干函数接口中增设接收参数,更改了许多接口定义,过于复杂。采取该方案后,能够保证TSS的上层服务接口定义基本不变,上层密钥应用无需做明显改动,就可以实现用户密钥的生成功能。
3 流程设计
在TCM中同时支持非对称密钥SM2和对称密钥SMS4两种类型的用户密钥生成。本文提出一种在TSS重构过程中,不添加密钥创建接口,在应用程序中增设选择性变量Flag的方案,通过参数确定生成的密钥类型,因此SMS4密钥与SM2密钥的生成在TSP层共用一样的接口调用流程。图1为两种体系通用的密钥生成流程图。
表1:FC7环境下的TCM与TrouSers配置方法
图2:CreateWrapKey在TSS层的运行结果
图3:CreateWrapKey在TCM Emulator内的测试结果
图4:文件SMS4.key存储生成的密钥
4 仿真实现
4.1 配置实验环境
实验环节仿真系统的模拟平台为:Linux操作系统,Fedora 7版本。
TCM在本质上是物理硬件芯片,实现起来具有一定的复杂性。因此在测试过程中使用可信密码模块TCM的模拟器TCM_emulator-0.3版本。TCM_emulator-0.3这种模拟器实现了可信密码支撑平台所定义的核心安全功能模块,能够满足实验过程中的需求。模拟器的实现,为可信计算课题的研究提供了良好的开发和测试平台,同时也降低了实验成本。
对于上层可信软件栈TSS,使用TSS_For_TCM,目的在于实现基于TCM设计的上层应用可以不做修改或作少量修改而通过其使用TCM的服务。
仿真实验思路为:加载TCM_Emulator,启用TSS_For_TCM,运行针对TCM设计的上层应用,获得应用层、TCS层、内核层的测试数据信息。
在Fedora 7下连接TSS_For_TCM与TCM_emulator-0.3的过程如表1所示。
图5:CreateWrapKey在TSS层的实验结果
图6:CreateWrapKey在TCM Emulator内的测试结果
图7:文件ECC.key存储生成的密钥
4.2 对称密钥
在TPM中仅支持RSA一种类型密钥的生成,而在TCM中则同时支持非对称密钥SM2和对称密钥SMS4两种类型的生成。在测试过程中,先以SMS4类型密钥的生成为例,与SM2密钥的生成在TSP层共用一样的接口调用流程。
(1)对称密钥使用SMS4密码算法,利用CreateWrapKey命令在TSS层的运行结果如图2所示。
(2)对称密钥利用CreateWrapKey命令在TCM Emulator内的测试结果如图3所示。
(3)所生成的密钥被文件SMS4.key存储,如图4所示。
4.3 非对称密钥
(1)非对称密钥利用ECC密钥算法,利用两种密钥的通用命令CreateWrapKey在TSS层的实验结果如图5所示。
(2)非对称密钥利用CreateWrapKey命令在TCM Emulator内的测试结果如图6所示。
(3)所生成的密钥被文件ECC.key存储,如图7所示。
5 结束语
本文首先阐述了TCM的密钥算法与密钥机制,针对UK的特殊性提出了一种对两种用户密钥UK的兼容性生成方案,并对生成过程设计出其流程,最后在Linux操作系统下利用使用可信密码模块TCM的模拟器TCM_emulator-0.3版本对用户密钥的生成过程进行了仿真实现。