一种可信平台控制模块的授权协议的制作方法

文档序号:13763145阅读:321来源:国知局

本发明涉及信息安全领域,具体涉及一种可信平台控制模块的授权协议。



背景技术:

TPM是TCG国际可信计算联盟组织设计的一款可信计算芯片,其鉴权机制与我国TPCM机制相类似。为了实现资源的授权访问,TPM执行一系列精心设计的协议来抵御各种形式的攻击,即授权协议。授权协议的目的就是向TPM证明访问者有权限通过指定的函数访问这个对象。授权主要针对可能会影响安全、隐私或者会暴露平台秘密的TPM命令。验证的依据来自于一个共享的秘密——授权数据(AuthData)。

共有三种授权协议能够安全的将授权数据从访问者传送到TPM,并验证其正确性。包括:对象无关授权协议OIAP(Object-Independent Authorization Protocol),对象相关授权协议OSAP(Object-Specific Authorization Protocol)和授权数据植入协议ADIP(Authorization Data Inplant Protocol)。

共有三种授权数据管理协议用来创建或修改授权数据。TPM规范中包括三个授权数据管理协议:授权数据插入协议ADIP(AuthData Insertion Protocol),授权数据修改协议ADCP(AuthData Change Protocol)和非对称授权数据修改协议AACP(Asymmetric Authorization Change Protocol)。

在这些授权协议中,OIAP和OSAP这两个协议用于建立会话环境,ADIP、这三个协议用于处理授权信息。

这些协议在设计过程中充分考虑了可能受到的安全威胁,通过HMAC和非对称加密技术保证授权数据传递过程中的完整性和机密性、并通过”rolling nonce”滚动随机数机制,防止重放攻击和中间人攻击。

我国的可信计算研究起步较早,国家也加大力度支撑可信计算的研究和发展。并制定和编写了一系列的可信计算技术规范和方案。其中在《可信计算平台密码方案》中,提出了AP授权协议框架。该标准所建立会话,是针对特定实体的。在会话建立过程中使用实体的authData、实体生成的nonce值、TPCM生成的nonce值,通过HMAC计算生成一个会话临时密钥sessionKey。使用sessionKey和SM4、SM3算法来进行加密和HMAC计算,以保证数据在实体和TPCM直接传递时的完整性和机密性。通过使用序列号递增机制来防止重放攻击和中间人攻击。

在对TPCM中的敏感资源进行调用时,一般需要口令来做到访问控制,同时对输入和输出参数要能够确保未被篡改,此外对口令修改等敏感信息操作需要进行加密通信。因此在完成命令接口功能性的同时,需要利用AP协议满足以上安全要求。AP协议需要保证外部实体与TPCM之间的访问控制、数据的完整性、以及敏感信息的机密性。针对这几种需求,需要AP协议适应三种不同的应用场景:

对象无关的应用:AP协议向任意实体提供多个会话,此时要求AP会话可以在不同实体之间复用。

对象相关的应用:AP会话与实体相关,创建的会话只能在同一实体中使用。

授权数据使用:执行授权数据的创建、修改的操作,要求AP协议在保证访问控制、数据完整性外,还需对数据进行加密保护。

原始的AP协议框架与OSAP协议相似,是和实体相关的,每次创建会话时,都需要使用实体的授权数据来生成会话临时密钥,无法在不同实体之间进行复用。使得在面对OIAP协议的应用场景中其资源利用效率低,这对于资源稀缺的芯片来说是一个弊端。因此,有必要在保留AP协议的安全性同时,对AP协议进行扩展,以满足此种应用场景,兼顾芯片功能接口对于会话资源的利用效率。



技术实现要素:

本发明提供一种可信平台控制模块的授权协议,其目的是使授权协议可以满足三种不同的应用场景:对象无关、对象相关和授权数据植入,能保证数据传输过程中的完整性和机密性,并对外部实体进行访问控制,防止外部实体对TPCM内敏感数据的未授权访问和使用。

本发明的目的是采用下述技术方案实现的:

一种可信平台控制模块的授权协议,其改进之处在于,包括:

外部调用者设置标志ifCreateKey,向所述可信平台控制模块发送会话请求命令TPCM_AP_CREATE,建立所述外部调用者与所述可信平台控制模块间AP会话,其中,建立所述AP会话过程中,所述可信平台控制模块生成随机数seq,并将所述随机数seq与所述外部调用者共享,若ifCreateKey的属性值为FLASE,则所述可信平台控制模块不生成临时密钥sessionKey,若ifCreateKey的属性值为TRUE,则所述可信平台控制模块生成临时密钥sessionKey;

所述外部调用者调用所述AP会话并执行可信平台控制模块命令TPCM_Example,若ifCreateKey的属性值为FLASE,则利用授权数据authData对所述外部调用者与所述可信平台控制模块间的交互数据进行完整性验证,若ifCreateKey的属性值为TRUE,则将所述临时密钥sessionKey作为密钥对所述外部调用者与所述可信平台控制模块间的交互数据进行加解密和完整性验证,其中,所述外部调用者与所述可信平台控制模块间每发送一次数据包,所述随机数seq自加1;

所述外部调用者执行TPCM_AP_TERMINATE命令,结束所述AP会话,释放所述AP会话资源。

优选的,所述建立所述外部调用者与所述可信平台控制模块间AP会话,包括:

所述外部调用者根据授权数据会话句柄AuthDataHandle获取授权数据AuthData,并利用随机数生成器生成随机数callerNonce;

所述外部调用者将标志ifCreateKey、会话请求命令TPCM_AP_CREATE、授权数据会话句柄AuthDataHandle、随机数callerNonce和校验值inMac发送至所述可信平台控制模块,其中,所述校验值inMac=HMAC(AuthData,TPCM_AP_CREATE||ifCreateKey||callerNonce|);

所述可信平台控制模块重构校验值Mac=HMAC(AuthData,TPCM_AP_CREATE||ifCreateKey||callerNonce),若Mac=inMac,则所述可信平台控制模块接收的数据为完整数据;

所述可信平台控制模块创建会话session,生成对应的会话句柄sessionHandle、随机数TPCMNonce和随机数seq,其中,seq=HASH(callerNonce||TPCMNonce);

若ifCreateKey的属性值为FLASE,则所述可信平台控制模块不生成临时密钥sessionKey,若ifCreateKey的属性值为TRUE,则所述可信平台控制模块生成临时密钥sessionKey,其中,sessionKey=HMAC(AuthData,seq);

所述可信平台控制模块生成校验值outMac=HMAC(AuthData,seq||TPCMNonce),并将会话句柄sessionHandle、随机数TPCMNonce、校验值outMac和随机数seq返回至所述外部调用者,保存会话句柄sessionHandle、随机数seq和临时密钥sessionKey;

所述外部调用者重构校验值Mac=HMAC(AuthData,seq||TPCMNonce),若Mac=outMac,则所述外部调用者接收的数据为完整数据;

所述外部调用者生成临时密钥sessionKey=HMAC(AuthData,seq),并保存会话句柄sessionHandle、随机数seq和临时密钥sessionKey。

优选的,所述外部调用者调用所述AP会话并执行可信平台控制模块命令TPCM_Example,若ifCreateKey的属性值为FLASE,则利用授权数据authData对所述外部调用者与所述可信平台控制模块间的交互数据进行完整性验证,若ifCreateKey的属性值为TRUE,则将所述临时密钥sessionKey作为密钥对所述外部调用者与所述可信平台控制模块间的交互数据进行加解密和完整性验证,包括:

若ifCreateKey的属性值为TRUE,则所述外部调用者将临时密钥sessionKey作为密钥,利用对称分组密码算法对输入数据comData进行加密,输入加密数据encComData=Enc(sessionKey,comData),并生成校验值inMac=HMAC(sessionKey,seq||encComData);

所述外部调用者将会话句柄sessionHandle、输入加密数据encComData和校验值inMac发送至所述可信平台控制模块;

所述可信平台控制模块重构校验值Mac=HMAC(sessionKey,seq||encComData),若Mac=inMac,则所述可信平台控制模块接收的数据为完整数据;

所述可信平台控制模块对输入加密数据encComData进行解密,获取所述输入数据comData=Dec(sessionKey,encComData),并执行可信平台控制模块命令TPCM_Example获取输出数据rspData;

所述可信平台控制模块对输出数据rspData进行加密,获取输出加密数据encRspData=Enc(sessionKey,rspData),令seq=seq+1并生成校验值outMac=HMAC(sessionKey,seq||encRspData);

所述可信平台控制模块将所述输出加密数据encRspData和校验值outMac返回至所述外部调用者;

所述外部调用者令seq=seq+1,并重构校验值Mac=HMAC(sessionKey,seq||encRspData),若Mac=outMac,则所述外部调用者接收的数据为完整数据;

所述外部调用者对所述输出加密数据encRspData进行解密,获取输出数据rspData=Dec(sessionKey,encRspData)。

优选的,所述外部调用者调用所述AP会话并执行可信平台控制模块命令TPCM_Example,若ifCreateKey的属性值为FLASE,则利用授权数据authData对所述外部调用者与所述可信平台控制模块间的交互数据进行完整性验证,若ifCreateKey的属性值为TRUE,则将所述临时密钥sessionKey作为密钥对所述外部调用者与所述可信平台控制模块间的交互数据进行加解密和完整性验证,包括:

若ifCreateKey的属性值为FLASE,则所述外部调用者成校验值inMac=HMAC(authData,seq||ComData),并将会话句柄sessionHandle、输入数据ComData和校验值inMac发送至所述可信平台控制模块;

所述可信平台控制模块重构校验值Mac=HMAC(authData,seq||ComData),若Mac=inMac,则所述可信平台控制模块接收的数据为完整数据;

所述可信平台控制模块利用所述输入数据ComData执行可信平台控制模块命令TPCM_Example获取输出数据rspData;

所述可信平台控制模块令seq=seq+1并生成校验值outMac=HMAC(authData,seq||rspData);

所述可信平台控制模块将所述输出数据rspData和校验值outMac返回至所述外部调用者;

所述外部调用者令seq=seq+1,并重构校验值Mac=HMAC(authData,seq||rspData),若Mac=outMac,则所述外部调用者接收的数据为完整数据;

所述外部调用者获取所述输出数据rspData。

优选的,所述外部调用者执行TPCM_AP_TERMINATE命令,结束所述AP会话,释放所述AP会话资源,包括:

所述外部调用者执行TPCM_AP_TERMINATE命令,令seq=seq+1,生成校验值inMac=HMAC(secret,seq||TPCM_AP_TERMINATE),若ifCreateKey的属性值为FLASE,则secret=authData,若ifCreateKey的属性值为TRUE,则secret=sessionKey;

所述外部调用者将TPCM_AP_TERMINATE命令、会话句柄sessionHandle和校验值inMac发送至所述可信平台控制模块;

所述可信平台控制模块令seq=seq+1,并重构校验值Mac=HMAC(Secret,seq||TPCM_AP_TERMINATE),若Mac=inMac,则所述外部调用者接收的数据为完整数据;

所述可信平台控制模块释放所述AP会话资源,并将输出数据retCode返回至所述外部调用者;

所述外部调用者释放所述AP会话资源。

优选的,向所述可信平台控制模块发送的数据包或所述可信平台控制模块返回的数据包结构包括:包头字段、可变长参数段和包尾的会话句柄,其中,所述包头字段包括:标识tag、包长度size、命令码ordinal和用户ID。

本发明的有益效果:

本发明提供的一种可信平台控制模块的授权协议,既保护了命令执行过程中传输数据的完整性和私密性,又确保了外部实体和TPCM间的身份合法性,并且满足对象无关的应用、对象相关的应用和授权数据使用三种不同应用场景的使用需求,在资源的使用方面,更具有优势,一个命令接口最多使用一个会话,而TPM需要使用1~2个会话,能够根据不同的需要来灵活的创建AP会话,会话资源可被复用,也可绑定单个对象,增强了授权协议的效率和适应性。

附图说明

图1是本发明一种可信平台控制模块的授权协议的流程图。

具体实施方式

下面结合附图对本发明的具体实施方式作详细说明。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

当外部实体使用存储在TPCM外部的对象包裹体时(TPCM内部对象在未被使用时,一般以加密形式存于TPCM外部,该加密态的数据块称为对象的包裹体),有两个过程,首先对象包裹体载入TPCM内部并解包裹,然后使用对象本身。两个过程要确保1)外部实体和TPCM的身份是合法的;2)传输数据未被篡改,其中敏感的部分要确保私密性。前者通过比对外部实体的口令和对象本身的口令来确定外部实体的身份合法,但又不能在传输中泄露口令;后者需要对传输中的数据进行完整性校验。额外的一点是,每次传输的数据包要不相同,防止重放攻击。综合以上几点要求,本发明提供的一种可信平台控制模块的授权协议,如图1所示,包括:

101.外部调用者设置标志ifCreateKey,向所述可信平台控制模块发送会话请求命令TPCM_AP_CREATE,建立所述外部调用者与所述可信平台控制模块间AP会话,其中,建立所述AP会话过程中,所述可信平台控制模块生成随机数seq,并将所述随机数seq与所述外部调用者共享,若ifCreateKey的属性值为FLASE,则所述可信平台控制模块不生成临时密钥sessionKey,若ifCreateKey的属性值为TRUE,则所述可信平台控制模块生成临时密钥sessionKey;

102.所述外部调用者调用所述AP会话并执行可信平台控制模块命令TPCM_Example,若ifCreateKey的属性值为FLASE,则利用授权数据authData对所述外部调用者与所述可信平台控制模块间的交互数据进行完整性验证,若ifCreateKey的属性值为TRUE,则将所述临时密钥sessionKey作为密钥对所述外部调用者与所述可信平台控制模块间的交互数据进行加解密和完整性验证,其中,所述外部调用者与所述可信平台控制模块间每发送一次数据包,所述随机数seq自加1;

103.所述外部调用者执行TPCM_AP_TERMINATE命令,结束所述AP会话,释放所述AP会话资源。

其中,向所述可信平台控制模块发送的数据包或所述可信平台控制模块返回的数据包结构,包括:包头字段、可变长参数段和包尾的会话句柄,其中,所述包头字段包括:标识tag、包长度size、命令码ordinal和用户ID。

对于采用授权会话的命令来讲,每个命令的数据包包尾都是由一个4字节的会话句柄指代TPCM中的会话资源对象。

具体的,所述步骤101中,建立所述外部调用者与所述可信平台控制模块间AP会话,包括:

所述外部调用者根据授权数据会话句柄AuthDataHandle获取授权数据AuthData,并利用随机数生成器生成随机数callerNonce;

所述外部调用者将标志ifCreateKey、会话请求命令TPCM_AP_CREATE、授权数据会话句柄AuthDataHandle、随机数callerNonce和校验值inMac发送至所述可信平台控制模块,其中,所述校验值inMac=HMAC(AuthData,TPCM_AP_CREATE||ifCreateKey||callerNonce|);

所述可信平台控制模块重构校验值Mac=HMAC(AuthData,TPCM_AP_CREATE||ifCreateKey||callerNonce),若Mac=inMac,则所述可信平台控制模块接收的数据为完整数据;

所述可信平台控制模块创建会话session,生成对应的会话句柄sessionHandle、随机数TPCMNonce和随机数seq,其中,seq=HASH(callerNonce||TPCMNonce);

若ifCreateKey的属性值为FLASE,则所述可信平台控制模块不生成临时密钥sessionKey,若ifCreateKey的属性值为TRUE,则所述可信平台控制模块生成临时密钥sessionKey,其中,sessionKey=HMAC(AuthData,seq);

所述可信平台控制模块生成校验值outMac=HMAC(AuthData,seq||TPCMNonce),并将会话句柄sessionHandle、随机数TPCMNonce、校验值outMac和随机数seq返回至所述外部调用者,保存会话句柄sessionHandle、随机数seq和临时密钥sessionKey;

所述外部调用者重构校验值Mac=HMAC(AuthData,seq||TPCMNonce),若Mac=outMac,则所述外部调用者接收的数据为完整数据;

所述外部调用者生成临时密钥sessionKey=HMAC(AuthData,seq),并保存会话句柄sessionHandle、随机数seq和临时密钥sessionKey。

所述步骤102,包括:

若ifCreateKey的属性值为TRUE,则所述外部调用者将临时密钥sessionKey作为密钥,利用对称分组密码算法对输入数据comData进行加密,输入加密数据encComData=Enc(sessionKey,comData),并生成校验值inMac=HMAC(sessionKey,seq||encComData);

所述外部调用者将会话句柄sessionHandle、输入加密数据encComData和校验值inMac发送至所述可信平台控制模块;

所述可信平台控制模块重构校验值Mac=HMAC(sessionKey,seq||encComData),若Mac=inMac,则所述可信平台控制模块接收的数据为完整数据;

所述可信平台控制模块对输入加密数据encComData进行解密,获取所述输入数据comData=Dec(sessionKey,encComData),并执行可信平台控制模块命令TPCM_Example获取输出数据rspData;

所述可信平台控制模块对输出数据rspData进行加密,获取输出加密数据encRspData=Enc(sessionKey,rspData),令seq=seq+1并生成校验值outMac=HMAC(sessionKey,seq||encRspData);

所述可信平台控制模块将所述输出加密数据encRspData和校验值outMac返回至所述外部调用者;

所述外部调用者令seq=seq+1,并重构校验值Mac=HMAC(sessionKey,seq||encRspData),若Mac=outMac,则所述外部调用者接收的数据为完整数据;

所述外部调用者对所述输出加密数据encRspData进行解密,获取输出数据rspData=Dec(sessionKey,encRspData)。

所述步骤102还包括:

若ifCreateKey的属性值为FLASE,则所述外部调用者成校验值inMac=HMAC(authData,seq||ComData),并将会话句柄sessionHandle、输入数据ComData和校验值inMac发送至所述可信平台控制模块;

所述可信平台控制模块重构校验值Mac=HMAC(authData,seq||ComData),若Mac=inMac,则所述可信平台控制模块接收的数据为完整数据;

所述可信平台控制模块利用所述输入数据ComData执行可信平台控制模块命令TPCM_Example获取输出数据rspData;

所述可信平台控制模块令seq=seq+1并生成校验值outMac=HMAC(authData,seq||rspData);

所述可信平台控制模块将所述输出数据rspData和校验值outMac返回至所述外部调用者;

所述外部调用者令seq=seq+1,并重构校验值Mac=HMAC(authData,seq||rspData),若Mac=outMac,则所述外部调用者接收的数据为完整数据;

所述外部调用者获取所述输出数据rspData。

所述步骤103,包括:

所述外部调用者执行TPCM_AP_TERMINATE命令,令seq=seq+1,生成校验值inMac=HMAC(secret,seq||TPCM_AP_TERMINATE),若ifCreateKey的属性值为FLASE,则secret=authData,若ifCreateKey的属性值为TRUE,则secret=sessionKey;

所述外部调用者将TPCM_AP_TERMINATE命令、会话句柄sessionHandle和校验值inMac发送至所述可信平台控制模块;

所述可信平台控制模块令seq=seq+1,并重构校验值Mac=HMAC(Secret,seq||TPCM_AP_TERMINATE),若Mac=inMac,则所述外部调用者接收的数据为完整数据;

所述可信平台控制模块释放所述AP会话资源,并将输出数据retCode返回至所述外部调用者;

所述外部调用者释放所述AP会话资源。

本发明一种可信平台控制模块的授权协议能够满足对象无关的应用场景使用需求,授权会话可以被使用不同对象的命令复用;在会话建立时,不创建临时密钥sessionKey。使用会话时,用对象的授权数据authData来进行HMAC计算,来保证外部实体与TPCM直接传递的数据的完整性。通过这样的设计,可以减少TPCM内部会话的个数,不需要每执行一个命令,生成一个会话,提高TPCM的有效命令比率。

本发明一种可信平台控制模块的授权协议能够满足对象相关的应用的应用场景使用需求,外部实体和TPCM之间建立的授权会话可以在使用相同对象的不同命令中复用。即会话绑定对象。在会话建立时,使用实体的授权数据authData作为密钥,通过计算HMAC来生成临时密钥sessionKey。使用会话时,用会话的临时密钥sessionKey来进行HMAC计算,以保证实体与TPCM之间传递的数据的完整性。

本发明一种可信平台控制模块的授权协议能够满足授权数据操作的的应用场景使用需求,外部实体和TPCM之间建立的会话可以在对同一对象的不同命令调用时复用,但不能被其他对象复用。在会话建立时,使用对象的授权数据authData作为密钥,通过计算HMAC来生成临时密钥sessionKey。使用会话时,用会话的临时密钥sessionKey来进行HMAC计算,来保证实体与TPCM之间传递的数据的完整性。并使用会话的临时密钥sessionKey作为加密密钥,使用对称算法对输入的敏感数据进行加密,以保护敏感数据的机密性。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1