专利名称:一种基于tsm的tcm管理接口及其实现方法
技术领域:
本发明涉及计算机安全可信领域,具体涉及一种基于TSM (TCM Service Module)的 TCM (Trusted Cryptography Module)管理接口及其实现方法。
背景技术:
在现有可信计算密码支撑平台中,TSM (TCM Service Module)作为TCM (TrustedCryptography Module)芯片和用户应用层之间的平台软件,支持TCM芯片向上提供平台认证、密码学服务和芯片管理等重要功能。TSM内部涉及TCM核心服务TCS (TCM CoreServices)层、TCM 用户服务 TSP (TCM Service Provider)层、TCM 设备驱动库 TDDL (TCMDevice Driver Library)层和 TCM 设备驱动 TDD (TCM Device Driver)层,是一套非常复杂的平台软件系统。 其中TSP层的主要功能包括上下文管理、策略对象管理、TCM管理、密钥管理和安全操作等。具有通用函数接口、上下文函数接口、数据加密解密函数接口、密钥函数接口、TCM管理函数接口等一百多个函数接口 ;TSP向调用它的应用程序隐藏了 TCM相关授权会话的管理,对于用户应用层程序来说不需要初始化任何的授权会话,所需授权会话的初始化由TSP完成,同时TSP负责处理会话相关的所有内部数据。在现有的可信计算应用管理中,通常是应用层软件直接调用TSM的底层功能函数接口对TCM芯片进行管理,然而对于一般的没有可信计算基础的用户来说,即使学习TSP层的一些应用函数接口也是一个耗时较长的过程,去花费这些代价来实现一些简单的TCM芯片管理功能,有时候是得不偿失的。
发明内容
本发明所要解决的技术问题是提供一种基于TSM的TCM管理接口及其实现方法,通过对TSM的底层功能函数接口进行组合、调用和封装,为TCM管理应用层软件提供统一的标准接口。为了解决上述技术问题,本发明公开了一种基于TSM的TCM管理接口的实现方法,包括如下步骤
获取TSM的底层功能函数接口 ;
根据设定的目标对TSM的底层功能函数接口进行指配连接;
将指配连接的TSM的底层功能函数接口封装为TCM管理接口。进一步,所述根据设定目标对TSM的底层功能函数接口进行指配连接的步骤包括
设定用于对TCM芯片进行管理的目标;
根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口 ;
通过调用TSM的底层功能函数接口连接应用层和TCM芯片。进一步,所述设定用于对TCM芯片进行管理的目标为初始化TCM芯片所有者口令目标、或者验证TCM芯片所有者口令目标、或者修改TCM芯片所有者口令目标、或者设置TCM芯片状态目标、或者获取TCM芯片状态目标、或者获取TCM芯片是否创建所有者目标、或者获取TCM芯片属性信息目标、或者获取TSM属性信息目标、或者TCM芯片自检目标或者TCM芯片解锁目标。进一步,所述根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口为
当所述选择的设定目标为初始化TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于创建TCM所有者口令的函数和获取TCM芯片所有权的函数;
当所述选择的设定目标为验证TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于获取不可撤消的密码模块公钥的函数; 当所述选择的设定目标为修改TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于改变所有者口令的函数;
当所述选择的设定目标为设置TCM芯片状态时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数和用于设置TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片状态时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片是否创建所有者时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片是否创建了所有者的函数;
当所述选择的设定目标为获取TCM芯片属性信息目标时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片属性信息的函数;
当所述选择的设定目标为获取TSM属性信息目标时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TSM属性信息的函数;
当所述选择的设定目标为TCM芯片自检目标时,调用TSM中与该目标对应的底层功能函数接口包括用于TCM内部功能自检的函数;
当所述选择的设定目标为TCM芯片解锁目标时,调用TSM中与该目标对应的底层功能函数接口包括用于对TCM芯片进行解锁的函数。本发明还公开了一种基于TSM的TCM管理接口,所述TCM管理接口包括函数接口获取模块、指配连接模块和封装模块,其中
所述函数接口获取模块,用于获取TSM的底层功能函数;
所述指配连接模块,用于根据设定目标对TSM的底层功能函数接口进行指配连接; 所述封装模块,用于将指配连接的TSM的底层功能函数接口封装为TCM管理接口。 进一步,所述指配连接模块包括设定目标单元、函数接口调用单元和连接单元,其中
所述设定目标单元,用于设定对TCM芯片进行管理的目标;
所述函数接口调用单元,用于根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口;
所述连接单元,用于通过调用TSM的底层功能函数接口连接应用层和TCM芯片。进一步,所述函数接口调用单元根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口为当所述选择的设定目标为初始化TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于创建TCM所有者口令的函数和获取TCM芯片所有权的函数;
当所述选择的设定目标为验证TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取不可撤消的密码模块公钥的函数;当所述选择的设定目标为修改TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于改变所有者口令的函数;
当所述选择的设定目标为设置TCM芯片状态时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数和用于设置TCM芯片状态的函数; 当所述选择的设定目标为获取TCM芯片状态时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片是否创建所有者时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片是否创建了所有者的函数;
当所述选择的设定目标为获取TCM芯片属性信息目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片属性信息的函数;
当所述选择的设定目标为获取TSM属性信息目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TSM属性信息的函数;
当所述选择的设定目标为TCM芯片自检目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于TCM内部功能自检的函数;
当所述选择的设定目标为TCM芯片解锁目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于对TCM芯片进行解锁的函数。采用本发明的技术方案对TSM的底层功能函数接口进行组合、调用和封装,为TCM管理应用层提供了统一的标准接口,实现应用层可以真接通过TCM管理接口对TCM芯片进行管理,最大程度的便利了用户特别是初级用户对TCM可信计算产品进行应用和开发,提高了用户的工作效率。
图I为本发明实现TCM管理接口的方法流程 图2为TSM的内部功能函数接口构架示意 图3为本发明实现初始化TCM芯片所有者口令的逻辑示意 图4为本发明实现验证TCM芯片所有者口令的逻辑示意 图5为本发明实现修改TCM芯片所有者口令的逻辑示意 图6为本发明实现设置TCM芯片状态的逻辑示意 图7为本发明实现获取TCM芯片状态的逻辑示意 图8为本发明实现获取TCM芯片是否创建所有者的逻辑示意 图9为本发明实现获取TCM芯片属性信息的逻辑示意 图10为本发明实现获取TSM属性信息的逻辑示意图;图11为本发明实现TCM芯片自检的逻辑示意 图12为本发明实现TCM芯片解锁的逻辑示意 图13为本发明实施例中TCM管理接口的内部逻辑结构示意 图14为本发明实施例中封装的TCM管理接口在可信计算密码支撑平台中的逻辑结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。本发明一实施例公开了一种基于TSM的TCM管理接口的实现方法,图I为本发明实现TCM管理接口的方法流程图,如图I所示,该方法包括
步骤101 :获取TSM的底层功能函数接口 ;
其中,所述TSM为TCM芯片和用户应用层软件之间的平台软件,支持TCM芯片向上提供平台认证、密码学服务和应用层软件对TCM芯片进行管理等重要功能。图2为TSM的内部功能函数接口构架示意图,如图2所示,在TSM内部涉及TCM核心服务TCS (TCM CoreServices)层、TCM 用户服务 TSP (TCM Service Provider)层、TCM 设备驱动库 TDDL (TCMDevice Driver Library)层和 TCM 设备驱动程序 TDD (TCM Device Driver)层,是一套非常复杂的平台软件系统。其中TSP层的主要功能包括上下文管理、策略对象管理、TCM管理、密钥管理和安全操作等。具有通用函数接口、上下文函数接口、数据加密解密函数接口、密钥函数接口、TCM管理函数接口等100多个功能函数接口 ;TSP向调用它的应用程序隐藏了 TCM相关授权会话的管理,对于用户应用层程序来说不需要初始化任何的授权会话,所需授权会话的初始化由TSP完成,同时TSP负责处理会话相关的所有内部数据。所述TSP层的功能函数接口包括
1)通用类接口6个
2)上下文类接口22个
3)策略类接口7个
4)数据加密解密类接口12个
5)TCM管理接口 29个
6)Hash (哈希算法)类接口 11个
7)密钥协商类接口7个
8)密钥类接口15个
TCS层内部涉及核心的TCM服务管理、完整性度量管理、平台身份标识管理、平台数据保护管理和TCM管理等模块。包括上下文管理函数接口、密钥管理函数接口、事件管理函数接口、用户管理函数接口、属性管理函数接口等80多个功能函数接口。所述TCS层的功能函数接口包括
1)TCM核心服务管理模块的上下文管理接口(4个)、密钥管理接口(7个)等;
2)完整性度量管理模块的PCR (程序控制)管理接口(4个);3)平台身份标识管理模块的密码模块密钥管理接口(4个)和平台身份密钥管理接口(4 个);
4)TCM管理模块的TCM测试接口(3个)、升级维护接口(2个)、模式设置接口(8个)、授权管理接口(2个)等;
5)平台数据保护管理模块的数据保护接口(2个)、传输会话接口(3个)、密钥管理接口(7个)、授权协议接口( 2个)等。 TCM 设备驱动库 TDDL (TCM Device Driver Library)位于 TSM 核心服务 TCS 层和TCM设备驱动程序TDD (TCM Device Driver)层之间,主要目的是在TDD之上提供一个标准的接口,屏蔽各设备输入输出控制信息的差异,完成指令和状态信息在用户模式和内核模式间的传递。TDDL提供的主要功能为连接TCM设备驱动程序TDD,通过TDD实现对TCM芯片的访问,提供对TCM芯片、驱动属性和状态信息的查询和设置等操作,并传递和控制上层发送给TCM的命令信息。基于TSM底层功能函数接口的复杂化,使得用户访问TCM芯片对其进行管理时,往往执行某项简单的管理功能都需要调用多个函数接口,对于一般的没有可信计算基础的用户来说,想要实现对TCM芯片进行管理,通常要花费很长时间学习这些底层功能函数接口,因此,本发明通过访问TSM底层功能函数接口的上下文,获取TSM底层功能函数接口的使用权,为设计TCM管理接口而灵活调用TSM底层功能函数接口而打下基础。步骤102 :根据设定的目标对TSM的底层功能函数接口进行指配连接;
在本实施例中,所述步骤102进一步包括如下子步骤
子步骤A,设定用于对TCM芯片进行管理的目标;
所述设定用于对TCM芯片进行管理的目标是指设置对TCM芯片进行管理的功能或预期达到的效果;在本实施例中,所述设定的目标为
1)初始化TCM芯片所有者口令目标,是指对访问TCM芯片的所有者口令进行初始化的功能;
2)验证TCM芯片所有者口令目标,是指对TCM芯片的所有者口令进行验证的功能;
3)修改TCM芯片所有者口令目标,是指对TCM芯片的所有者口令进行修改的功能;
4)设置TCM芯片状态目标,是指将TCM芯片设置为激活或禁用的状态;
5)获取TCM芯片状态目标,是指获取TCM芯片是否激活;
6)获取TCM芯片是否创建所有者目标,是指获取TCM芯片是否创建所有者口令;
7)获取TCM芯片属性信息目标,是指获取TCM芯片的属性信息,包括芯片厂商、型号、版本等信息;
8)获取TSM属性信息目标,是指获取TSM的属性信息,包括芯片厂商、型号、版本等信
息;
9)TCM芯片自检目标,是指对TCM芯片进行自检;
10)TCM芯片解锁目标,是指当TCM芯片被锁时,实现对TCM芯片进行解锁的功能。子步骤B,根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口 ; 在本实施例中,所述根据选择的设定目标调用TSM中与该目标对应的底层功能函数接
口为
当所述选择的设定目标为初始化TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于创建TCM所有者口令的函数和获取TCM芯片所有权的函数;当所述选择的设定目标为验证TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于获取不可撤消的密码模块公钥的函数;
当所述选择的设定目标为修改TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于改变所有者口令的函数;
当所述选择的设定目标为设置TCM芯片状态时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数和用于设置TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片状态时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片是否创建所有者时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片是否创建了所有者的函数;
当所述选择的设定目标为获取TCM芯片属性信息目标时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片属性信息的函数;
当所述选择的设定目标为获取TSM属性信息目标时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TSM属性信息的函数;
当所述选择的设定目标为TCM芯片自检目标时,调用TSM中与该目标对应的底层功能函数接口包括用于TCM内部功能自检的函数;
当所述选择的设定目标为TCM芯片解锁目标时,调用TSM中与该目标对应的底层功能函数接口包括用于对TCM芯片进行解锁的函数。子步骤C,通过调用TSM的底层功能函数接口连接应用层和TCM芯片。本实施例中,通过调用TSM的底层功能函数接口对TCM芯片进行管理,实现应用层和TCM芯片之间的直接通信。步骤103 :将指配连接的TSM的底层功能函数接口封装为TCM管理接口。以下结合附图详细描述根据上述实施例中设定的目标对TSM底层功能函数接口进行指配连接和封装的全过程。图3为本发明实现初始化TCM芯片所有者口令的逻辑示意图,如图3所示,根据设定的初始化TCM芯片所有者口令目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本发明实施例中,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口Tspi_TCM_GetStatus判断TCM是否激活,如果未激活,则关闭TSM上下文;如果已经激活,则进一步调用TSM底层函数接口 Tspi_TCM_GetCapabiIity判断TCM是否已经存在所有者;如果已经存在所有者,则关闭TSM上下文;如果不存在所有者,则调用TSM底层函数接P Tspi_Context_CreateO bject、Tspi_ Policy_AssignToObject、Tspi_GetPoIicyObject、Tspi_Policy_SetSecret 和 Tspi_TCM_GetPubEndorsementKey 获取初始密钥(包括密钥对象、策略对象和EK公钥),调用Tspi_TCM_TakeOwnerShip函数创建TCM所有者口令,即完成了对访问TCM芯片的所有者口令进行初始化的功能,最后调用TSpi_C0ntext_Cl0Se函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下Tspi_Context_Create
创建上下文首先创建一个上下文对象,并返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetStatus
查询TCM状态获取TCM芯片是否激活;
Tspi—TCM—GetCapab ility获取TCM芯片是否存在所有者口令;
Tspi_Context—FreeMemory
释放上下文(释放由TSP所分配的上下文内存资源);
Tspi—Context—CreateObject
获取初始密钥,包括密钥对象、策略对象和EK公钥;
Tspi— Policy—AssignToObject
绑定策略对象该函数分配策略给一个工作对象,工作对象可以利用这个策略去发起授权的TCM命令;
Tspi—GetPolicyObject 获取当前工作对象的策略返回当前工作对象的策略,如果应用程序没有创建策略对象,且在调用前没有为该工作对象指派策略,本函数将返回默认的上下文策略,并为默认上下文策略设置新的授权数据信息;
Tspi—Policy—SetSecret
设置策略授权本函数设置策略对象的授权数据和句柄;
Tspi—TCM—GetPubEndorsementKey获取不可撤消的密码模块的公钥;
Tspi_TCM—TakeOwnerShip
获取TCM的所有权创建TCM所有者口令;
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图4为本发明实现验证TCM芯片所有者口令的逻辑示意图,如图4所示,根据设定的验证TCM芯片用所有者令目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本发明实施例中,在验证TCM芯片所有者口令时,因为原来的口令是以密文的形式存放在TCM芯片内部的,所以如果要在没有授权的情况下通过直接匹配进行验证则需要重新获得一个新的所有者口令,但是如果获得了新的所有者口令则旧的所有者口令就无效了,达不到验证的目的,所以在这个目标中采取的方案是在TCM芯片已经有所有者口令的情况下,在不知道所有者口令是否授权的前提下,让所有者去执行一个授权操作,如果失败则说明口令错误,如果成功则说明口令正确。
首先调用TSM 底层函数接口 Tspi_Context_Create、Tspi_Context_Connect 和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口 Tspi_TCM_GetStatus判断TCM是否激活,如果未激活,则关闭TSM上下文;如果已经激活,则进一步调用TSM底层函数接口 Tspi_TCM_GetCapability判断TCM是否已经存在所有者;如果不存在所有者,则关闭TSM上下文;如果已存在所有者,则调用TSM底层函数接口 Tspi_GetPolicyOb ject> Tspi_Policy_SetSecret 和 Tspi_TCM_GetPubEndorsementKey 获取 TCM默认策略对象,然后给策略对象填充所有者口令(授权数据),并以授权的方式获取EK公钥,若获取成功,则验证成功,若获取失败则验证失败,最后调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetStatus
查询TCM状态获取TCM芯片是否激活;
Tspi—TCM—GetCapab ility获取TCM芯片是否存在所有者口令;
Tspi_Context—FreeMemory
释放上下文(释放由TSP所分配的上下文内存资源);
Tspi—GetPolicyObject
获取当前工作对象的策略返回当前工作对象的策略,如果应用程序没有创建策略对象,且在调用前没有为该工作对象指派策略,本函数将返回默认的上下文策略,并为默认上下文策略设置新的授权数据信息,将影响与其相关的所有对象的后续操作;
Tspi—Policy—SetSecret
设置策略授权本函数设置策略对象的授权数据和句柄;
Tspi—TCM—GetPubEndorsementKey获取不可撤消的密码模块的公钥; Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图5为本发明实现修改TCM芯片所有者口令的逻辑示意图,如图5所示,根据设定的修改TCM芯片所有者口令目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本发明实施例中,在修改TCM芯片所有者口令时,必须设置一些对象,例如需要修改授权数据的密钥对象句柄、所指向的对象的保护操作密钥对象的句柄、更新的授权信息策略对象句柄。
首先调用TSM 底层函数接口 Tspi_Context_Create、Tspi_Context_Connect 和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口 Tspi_TCM_GetStatus判断TCM是否激活,如果未激活,则关闭TSM上下文;如果已经激活,则进一步调用TSM底层函数接口 Tspi_TCM_GetCapability判断TCM是否已经存在所有者;如果不存在所有者,则关闭TSM上下文;如果存在所有者,则调用TSM底层函数接口 Tspi_GetPolicyObject和Tspi_policy_SetSecret获取TCM默认策略对象并给策略对象填充授权数据,最后调用 TSM 底层函数接口 Tspi_Context_CreateObject、Tspi_policy_SetSecret和Tspi_ChangeAuth重新设置策略对象并填充授权数据,完成修改所有者口令,调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,并返回该对象句柄; Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetStatus
查询TCM状态获取TCM芯片是否激活;
Tspi—TCM—GetCapab ility获取TCM芯片是否存在所有者;
Tspi_Context—FreeMemory
释放上下文(释放由TSP所分配的上下文内存资源);
Tspi—GetPolicyObject
获取当前工作对象的策略返回当前工作对象的策略,如果应用程序没有创建策略对象,且在调用前没有为该工作对象指派策略,本函数将返回默认的上下文策略,并为默认上下文策略设置新的授权数据信息,将影响与其相关的所有对象的后续操作;
Tspi—policy—SetSecret
设置策略授权本函数设置策略对象的授权数据和句柄;
Tspi—Context—CreateObject
创建上下文对象创建并初始化一个指定类型的空对象,返回该对象的句柄,该空对象将与一个已经打开的上下文对象相关联;
Tspi_ChangeAuth
改变授权数据改变所有者的授权数据(口令),并将该所有者指派给策略对象; Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图6为本发明实现设置TCM芯片状态的逻辑示意图,如图6所示,根据设定的设置TCM芯片状态目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本发明实施例中,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口Tspi_TCM_GetCapability判断TCM是否已经存在所有者,如果存在所有者,则调用TSM底层函数接口 Tspi_GetPolicyObject 和 Tspi_Policy_SetSecret 获取 TCM 策略对象(授权数据),并调用TSM底层函数接口 Tspi_TCM_GetStatus获取TCM芯片状态,调用Tspi_TCM_SetStatus函数接口对TCM芯片的状态进行设置;如果不存在所有者,则两次调用TSM底层函数接口 Tspi_TCM_SetStatus对TCM芯片的状态进行设置;设置完成后调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetCapab ility获取TCM芯片是否存在所有者;
Tspi_Context—FreeMemory
释放上下文(释放由TSP所分配的上下文内存资源);
Tspi—GetPolicyObject
获取当前工作对象的策略返回当前工作对象的策略,如果应用程序没有创建策略对象,且在调用前没有为该工作对象指派策略,本函数将返回默认的上下文策略,并为默认上下文策略设置新的授权数据信息,将影响与其相关的所有对象的后续操作;
Tspi—Policy—SetSecret
设置策略授权本函数设置策略对象的授权数据和句柄;
Tspi—TCM—GetStatus
查询TCM状态获取TCM芯片状态;
Tspi—TCM—SetStatus
设置TCM状态设置TCM芯片为激活或禁止状态;
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图7为本发明实现获取TCM芯片状态的逻辑示意图,如图7所示,根据设定的获取TCM芯片状态目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本发明实施例中,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect和Tspi_Context_GetTCMOb ject打开TSM上下文,然后两次调用TSM底层函数接口 Tspi_TCM_GetStatus判断TCM是否激活,返回结果后调用Tspi_Context_Close函数释放所分配的资源,完成封装,关闭TSM上下文。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetStatus
查询TCM状态获取TCM芯片状态(激活、禁止); Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图8为本发明实现获取TCM芯片是否创建所有者的逻辑示意图,如图8所示,根据设定的获取TCM芯片是否创建所有者目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本实施例中,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口Tsp i_TCM_Ge tCapab ility 和 Tspi_Context_FreeMemory 判断 TCM 是否已经存在所有者,返回结果后调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetCapab ility获取TCM是否创建了所有者;
Tspi_Context—FreeMemory
释放上下文(释放由TSP所分配的上下文内存资源);
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图9为本发明实现获取TCM芯片属性信息的逻辑示意图,如图9所示,根据设定的获取TCM芯片属性信息目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本实施例中,在获取TCM芯片属性信息(包括芯片厂商、型号、版本)时,首先调用TSM 底层函数接口 Tspi_Context_Create、Tspi_Context_Connect 和 Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口 Tspi_TCM_GetCapability判断TCM是否已经存在所有者,如果不存在所有者,则关闭TSM上下文,如果存在所有者,则再次调用TSM底层函数接口 Tspi_TCM_GetCapability获取TCM芯片属性信息,最后调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。
本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者; Tspi_TCM_GetCapab ility获取TCM是否存在所有者;
Tspi—TCM—GetCapab ility获取TCM芯片属性信息;
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图10为本发明实现获取TSM属性信息的逻辑示意图,如图10所示,根据设定的获取TSM属性信息目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本实施例中,在获取TSM属性信息(包括芯片厂商、型号、版本)时,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect 和 Tspi_Context_GetTCMOb ject 打开TSM上下文,然后调用TSM底层函数接口 Tspi_TCM_GetCapability判断TCM是否已经存在所有者,如果不存在所有者,则关闭TSM上下文,如果存在所有者,则调用TSM底层函数接口 Tspi_Context_GetCapability 获取 TSM 属性信息,最后调用 Tspi_Context_Close 函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi_Context_GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_GetCapab ility获取TCM是否存在所有者;
Tspi—Context—GetCapability获取TSM的属性信息;
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图11为本发明实现TCM芯片自检的逻辑示意图,如图11所示,根据设定的TCM芯片自检目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本实施例中,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口Tspi_TCM_SelfTestFull 进行芯片自检,进一步调用 Tspi_TCM_GetTestResult 和 Tspi_Context_GetTCMObject函数获取芯片自检结果,最后调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_TCM_SelfTestFullTCM内部功能自检;
Tspi_TCM_GetTestResult返回TCM自检结果;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。图12为本发明实现TCM芯片解锁的逻辑示意图,如图12所示,根据设定的TCM芯片解锁目标对TSM底层功能函数接口进行指配连接和封装,其过程如下
本实施例中,首先调用TSM底层函数接口 Tspi_Context_Create、Tspi_Context_Connect和Tspi_Context_GetTCMObject打开TSM上下文,然后调用TSM底层函数接口Tspi_GetPoIicyObject和Tspi_Policy_SetSecret获取策略对象并给策略对象填授权数据,如果获取策略对象失败,则关闭TSM上下文,如果获取策略对象成功,则进一步调用Tspi_TCM_SetStatus函数进行TCM芯片解锁,最后调用Tspi_Context_Close函数释放所分配的资源,关闭TSM上下文,完成封装。本实施例中调用的TSM底层功能函数接口如下
Tspi_Context_Create
创建上下文首先创建一个上下文对象,返回该对象句柄;
Tspi_Context_Connect
连接上下文建立TSP与TCS的连接;
Tspi—Context—GetTCMObject
获取TCM对象句柄获取TCM对象的上下文,一个给定的上下文只对应一个TCM对象实例,代表TCM所有者;
Tspi_GetPoIicyObject
获取当前工作对象的策略返回当前工作对象的策略,如果应用程序没有创建策略对象,且在调用前没有为该工作对象指派策略,本函数将返回默认的上下文策略,并为默认上下文策略设置新的授权数据信息,将影响与其相关的所有对象的后续操作;
Tspi—Policy—SetSecret
设置策略授权本函数设置策略对象的授权数据和句柄;
Tspi—TCM—SetStatus
设置TCM状态为TCM芯片进行解锁;
Tspi_Context_Close
关闭上下文,并释放所分配的所有资源,完成封装。
本发明另一实施例公开了一种基于TSM的TCM管理接口,图13为本发明实施例中TCM管理接口的内部逻辑结构示意图;如图13所示,所述TCM管理接口的内部结构包括函数接口获取模块1301、指配连接模块1302和封装模块1303,其中
所述函数接口获取模块1301,用于获取TSM的底层功能函数;
需要说明的是,所述获取TSM的底层功能函数的方法在上述实施例中已进行了详细描述,此处不再赘述。所述指配连接模块1302,用于根据设定目标对TSM的底层功能函数接口进行指配连接;
在本实施例中,所述指配连接模块1302进一步包括设定目标单元1302a、函数接口调用单元1302b和连接单元1302c,其中
所述设定目标单元1302a,用于设定对TCM芯片进行管理的目标;
所述函数接口调用单元1302b,用于根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口;
在本实施例中,所述函数接口调用单元1302b根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口为
当所述选择的设定目标为初始化TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于创建TCM所有者口令的函数和获取TCM芯片所有权的函数;
当所述选择的设定目标为验证TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取不可撤消的密码模块公钥的函数;当所述选择的设定目标为修改TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于改变所有者口令的函数;
当所述选择的设定目标为设置TCM芯片状态时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数和用于设置TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片状态时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数;
当所述选择的设定目标为获取TCM芯片是否创建所有者时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片是否创建了所有者的函数;
当所述选择的设定目标为获取TCM芯片属性信息目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片属性信息的函数;
当所述选择的设定目标为获取TSM属性信息目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TSM属性信息的函数;
当所述选择的设定目标为TCM芯片自检目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于TCM内部功能自检的函数;
当所述选择的设定目标为TCM芯片解锁目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于对TCM芯片进行解锁的函数。所述连接单元1302c,用于通过调用TSM的底层功能函数接口连接应用层和TCM芯片。所述封装模块1303,用于将指配连接的TSM的底层功能函数接口封装为TCM管理 接口。本发明实施例中,所述TCM管理接口是根据上述设定的目标对TSM的底层功能函数接口进行组合、调用、封装来实现的,在上述实施例中已给出了按照具体的设定目标对TSM底层功能函数接口进行指配连接和封装的详细过程,此处不再赘述,在此对封装后的TCM管理接口进行进一步描述。图14为本发明实施例中封装后的TCM管理接口在可信计算密码支撑平台中的逻辑结构示意图;如图14所示
所述按设定的目标对TSM底层功能函数接口进行指配连接和封装的TCM管理接口包
括
初始化接口,根据选择的初始化TCM芯片所有者口令目标将相应的TSM底层功能函数进行封装的接口,用于初始化TCM芯片所有者口令;
验证接口,根据选择的验证TCM芯片所有者口令目标将相应的TSM底层功能函数进行封装的接口,用于验证TCM芯片所有者口令;
修改接口,根据选择的修改TCM芯片所有者口令目标将相应的TSM底层功能函数进行封装的接口,用于修改TCM芯片所有者口令;
设置TCM芯片状态接口,根据选择的设置TCM芯片状态目标将相应的TSM底层功能函数进行封装的接口,用于设置TCM芯片为激活或禁止状态;
获取TCM芯片状态接口,根据选择的获取TCM芯片状态目标将相应的TSM底层功能函数进行封装的接口,用于获取TCM芯片是否激活;
获取创建所有者状态接口,根据选择的获取TCM芯片是否创建所有者目标将相应的TSM底层功能函数进行封装的接口,用于获取TCM芯片是否创建所有者;
获取TCM芯片信息接口,根据选择的获取TCM芯片属性信息目标将相应的TSM底层功能函数进行封装的接口,用于获取TCM芯片的属性信息;
获取TSM信息接口,根据选择的获取TSM属性信息目标将相应的TSM底层功能函数进行封装的接口,用于获取TSM的属性信息;
自检接口,根据选择的TCM芯片自检目标将相应的TSM底层功能函数进行封装的接口,用于对TCM芯片进行自检;
解锁接口,根据选择的TCM芯片解锁目标将相应的TSM底层功能函数进行封装的接口,用于对TCM芯片进行解锁。本发明的TCM管理接口为TCM管理应用层提供了统一的标准接口,TCM管理接口的内部与TSM底层功能函数接口进行连接,应用层不需要了解TSM底层功能函数接口的原理,通过TCM管理接口就能够实现对TCM芯片进行一系列的管理工作,从而使应用层能够更简单便捷地对TCM可信计算产品进行应用和开发,提高了应用层的工作效率。以上所述仅为本发明的较佳实施例,并不用以限制 本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于TSM的TCM管理接口的实现方法,其特征在于,所述方法包括 获取TSM的底层功能函数接口 ; 根据设定的目标对TSM的底层功能函数接口进行指配连接; 将指配连接的TSM的底层功能函数接口封装为TCM管理接口。
2.根据权利要求I所述的方法,其特征在于,所述根据设定目标对TSM的底层功能函数接口进行指配连接的步骤包括 设定用于对TCM芯片进行管理的目标; 根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口 ; 通过调用TSM的底层功能函数接口连接应用层和TCM芯片。
3.根据权利要求I或2所述的方法,其特征在于,所述设定用于对TCM芯片进行管理的目标为初始化TCM芯片所有者口令目标、或者验证TCM芯片所有者口令目标、或者修改TCM芯片所有者口令目标、或者设置TCM芯片状态目标、或者获取TCM芯片状态目标、或者获取TCM芯片是否创建所有者目标、或者获取TCM芯片属性信息目标、或者获取TSM属性信息目标、或者TCM芯片自检目标或者TCM芯片解锁目标。
4.根据权利要求3所述的方法,其特征在于,所述根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口为 当所述选择的设定目标为初始化TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于创建TCM所有者口令的函数和获取TCM芯片所有权的函数; 当所述选择的设定目标为验证TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于获取不可撤消的密码模块公钥的函数; 当所述选择的设定目标为修改TCM芯片所有者口令时,调用TSM中与该目标对应的底层功能函数接口包括用于改变所有者口令的函数; 当所述选择的设定目标为设置TCM芯片状态时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数和用于设置TCM芯片状态的函数; 当所述选择的设定目标为获取TCM芯片状态时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数; 当所述选择的设定目标为获取TCM芯片是否创建所有者时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片是否创建了所有者的函数; 当所述选择的设定目标为获取TCM芯片属性信息目标时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片属性信息的函数; 当所述选择的设定目标为获取TSM属性信息目标时,调用TSM中与该目标对应的底层功能函数接口包括用于获取TSM属性信息的函数; 当所述选择的设定目标为TCM芯片自检目标时,调用TSM中与该目标对应的底层功能函数接口包括用于TCM内部功能自检的函数; 当所述选择的设定目标为TCM芯片解锁目标时,调用TSM中与该目标对应的底层功能函数接口包括用于对TCM芯片进行解锁的函数。
5.一种基于TSM的TCM管理接口,其特征在于,所述TCM管理接口包括函数接口获取模块、指配连接模块和封装模块,其中 所述函数接口获取模块,用于获取TSM的底层功能函数;所述指配连接模块,用于根据设定目标对TSM的底层功能函数接口进行指配连接; 所述封装模块,用于将指配连接的TSM的底层功能函数接口封装为TCM管理接口。
6.根据权利要求5所述的TCM管理接口,其特征在于,所述指配连接模块包括设定目标单元、函数接口调用单元和连接单元,其中 所述设定目标单元,用于设定对TCM芯片进行管理的目标; 所述函数接口调用单元,用于根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口; 所述连接单元,用于通过调用TSM的底层功能函数接口连接应用层和TCM芯片。
7.根据权利要求6所述的TCM管理接口,其特征在于,所述函数接口调用单元根据选择的设定目标调用TSM中与该目标对应的底层功能函数接口为 当所述选择的设定目标为初始化TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于创建TCM所有者口令的函数和获取TCM芯片所有权的函数; 当所述选择的设定目标为验证TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取不可撤消的密码模块公钥的函数;当所述选择的设定目标为修改TCM芯片所有者口令时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于改变所有者口令的函数; 当所述选择的设定目标为设置TCM芯片状态时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数和用于设置TCM芯片状态的函数; 当所述选择的设定目标为获取TCM芯片状态时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片状态的函数; 当所述选择的设定目标为获取TCM芯片是否创建所有者时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片是否创建了所有者的函数; 当所述选择的设定目标为获取TCM芯片属性信息目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TCM芯片属性信息的函数; 当所述选择的设定目标为获取TSM属性信息目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于获取TSM属性信息的函数; 当所述选择的设定目标为TCM芯片自检目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于TCM内部功能自检的函数; 当所述选择的设定目标为TCM芯片解锁目标时,所述函数接口调用单元调用TSM中与该目标对应的底层功能函数接口包括用于对TCM芯片进行解锁的函数。
全文摘要
本发明涉及一种基于TSM(TCMServiceModule)的TCM(TrustedCryptographyModule)管理接口及其实现方法,其中,所述方法包括获取TSM的底层功能函数接口;根据设定的目标对TSM的底层功能函数接口进行指配连接;将指配连接的TSM的底层功能函数接口封装为TCM管理接口。通过本发明的技术方案对TSM的底层功能函数接口进行组合、调用和封装实现的TCM管理接口,为TCM管理应用层提供了统一的标准接口,从而使应用层可以通过TCM管理接口直接对TCM芯片进行管理,最大程度的提高了应用层对TCM可信计算产品进行应用和开发的效率。
文档编号G06F21/00GK102768714SQ20111011398
公开日2012年11月7日 申请日期2011年5月4日 优先权日2011年5月4日
发明者付月朋, 王正鹏, 郭飞 申请人:国民技术股份有限公司