;若两值相等,则B1S完整性度量成功,执行步骤22,并将得到的B1S完整性度量值与度量初始值进行杂凑扩展得到的B1S的新PCR值,将B1S的新PCR值写入对应的平台配置寄存器中;否则,执行步骤23;其中B1S的新PCR值=HASH(度量初始值I B1S完整性度量值)=(度量初始值I I B1S度量参考值);B10S度量参考值指的是B1S没有被篡改时,对B1S程序进行HSAH杂凑运算得到的值;B1S完整性度量值指的是对该终端B1S程序进行HSAH杂凑运算得到的值。
[0035]步骤22:CPU启动,依次执行嵌入于B10S、0S Loader、0S内核中的度量程序,通过调用可信密码模块对OS Loader、0S内核及应用程序进行完整性度量,若完整性度量成功则终端启动度量完成,并将各度量值与度量初始值进行杂凑扩展后写入对应的平台配置寄存器中;若度量失败则执行步骤23;
步骤23:退出可信计算终端的启动度量,告警并申请可信计算终端所有者进一步授权操作。
[0036]步骤3:可信计算终端运行阶段,应用程序在运行前将被加载到由MPU/MMU内存控制寄存器开辟的只读存储空间,同时度量代理模块调用可信密码模块对应用程序进行度量;当度量通过后,执行应用程序;具体为:
步骤31:位于OS内核的运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器将内存空间划分为多个固定大小的块空间,执行步骤32;
步骤32:调用钩子函数将待度量的应用程序映射到内存空间,执行步骤33。
[0037]步骤33:运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器,将装载有待度量应用程序的块空间属性设置为只读,执行步骤34。
[0038]步骤34:运行度量代理模块调用可信密码模块TCM对应用程序进行完整性度量;若完整性度量成功,则执行步骤35,并将得到的应用程序完整性度量值进行杂凑扩展得到应用程序新扩展完整性度量值,将该应用程序新扩展完整性度量值写入对应的平台配置寄存器中;否则,应用程序不能执行,运行度量代理告警并申请终端所有者进一步授权操作;其中应用程序新扩展完整性度量值=HASHn(HASHn-l(."HASHi (…HASH2(HASH1 (应用程序度量初始值I I应用程序完整性度量值I) I I应用程序完整性度量值2)…I I应用程序完整性度量值i)...)应用程序完整性度量值n-1 I I应用程序完整性度量值n),其中η=总度量次数,HASHi表示第i次杂凑运算,应用程序完整性度量值i表示第i次对该终端应用程序进行HSAH杂凑运算得到的值;度量初始值指的是验证方与该可信计算终端的共享密钥;
步骤35:运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器,将装载有待度量应用程序的块空间属性设置为可读写,执行步骤36;
步骤36:为应用程序建立上下文执行环境,并跳转到其main入口函数开始执行,执行步骤37;
步骤37:应用程序运行完毕后,需要定时释放所占据的内存空间,以便下次运行时重新加载。
[0039]步骤4:当可信计算终端进行完整性证明时,将储存于平台配置寄存器中可信计算终端部件的扩展完整性度量值和总度量次数η进行签名后发送给验证方,验证方通过执行杂凑运算即可验证该可信计算终端的完整性;可信计算终端部件的扩展完整性度量值为HASH(度量n-Ι次后扩展的完整性度量值I I第η次完整性度量值)=HASHn(HASHn-l(---HASHi(…HASH2(HASH1 (度量初始值完整性度量值I) I完整性度量值2)…完整性度量值i)...)完整性度量值n-11 I完整性度量值n),其中η=总度量次数,HASHi表示第i次杂凑运算,完整性度量值i表示第i次的完整性度量值,具体为:
步骤41:当可信计算终端需要提供完整性证明时,只需将储存于配置寄存器PCR中的扩展完整性度量值和总度量次数进行签名后发送给验证方,完整性验证方验证PCR中的扩展完整性度量值和总度量次数的签名,若签名验证通过执行步骤42,否则执行步骤43。
[0040]步骤42:完整性验证方通过执行杂凑算法判断可信计算终端的完整性;判断依据为:平台配置寄存器的扩展完整性度量值是否等于HASHn(HASHn-l (…HASHi (…HASH2(HASHl(度量初始值I I度量参考值)I I度量参考值)...| I度量参考值)...)度量参考值I I度量参考值),其中η=总度量次数,HASHi表示第i次杂凑运算;若两个相等,则完整性验证成功;否则,执行步骤4.3;其中度量参考值指的是可信计算终端部件没有被篡改时,对其进行HSAH杂凑运算得到的值;完整性度量值指的是对可信计算终端部件进行HSAH杂凑运算得到的值;所述部件包括B10S、0S Loader、0S内核以及应用程序。
[0041 ]步骤43:完整性验证失败,验证方将失败结果告知可信计算终端。
[0042]本发明并不局限于前述的【具体实施方式】。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
【主权项】
1.一种可信计算终端完整性度量、证明方法,其特征在于包括: 步骤1:将可信计算终端各部件的度量参考值和度量初始值注入可信密码模块TCM中;度量参考值指的是可信计算终端部件没有被篡改时,对其进行HSAH杂凑运算得到的值;所述部件包括B1S、OS Loader、OS内核以及应用程序;度量初始值指的是验证方与该可信计算终端的共享密钥; 步骤2:启动阶段,首先可信密码模块主动对计算机终端的B1S进行完整性度量;当B1S的完整性度量成功后,CPU启动,然后CPU调用可信密码模块依次对OS Loader、0S内核及应用程序进行完整性度量;当可信计算终端部件全部度量成功后,执行步骤3;否则,开机启动失败; 步骤3:可信计算终端运行阶段,应用程序在运行前将被加载到由MPU/MMU内存控制寄存器开辟的只读存储空间,同时度量代理模块调用可信密码模块对应用程序进行度量;当度量通过后,执行应用程序; 步骤4:当可信计算终端进行完整性证明时,将储存于平台配置寄存器中可信计算终端部件的扩展完整性度量值和总度量次数η进行签名后发送给验证方,验证方通过执行杂凑运算即可验证该可信计算终端的完整性;可信计算终端部件的扩展完整性度量值为HASH(度量n-1次后扩展的完整性度量值I I第η次完整性度量值)=HASHn(HASHn-1(..-HASHi(...HASH2(HASH1(度量初始值完整性度量值I) I完整性度量值2)…完整性度量值i)…)完整性度量值n-11 I完整性度量值n),其中η=总度量次数,HASHi表示第i次杂凑运算,完整性度量值i表示第i次的完整性度量值。2.根据权利要求1所述的一种可信计算终端完整性度量、证明方法,其特征在于所述步骤I中的度量参考值和度量初始值只在可信计算终端交付或终端部件增加、更新时通过授权数据结合物理现场的方式注入到可信密码模块的非易失性存储器中;其中注入的度量初始值始终存储在可信密码模块内不能被读出,且每次可信计算终端开机启动时,度量初始值将被重新写入可信密码模块的平台配置寄存器中。3.根据权利要求1所述的一种可信计算终端完整性度量及证明方法,其特征在于所述步骤2具体包括以下步骤: 步骤21:可信计算终端上电后,可信密码模块先于CPU启动,可信密码模块主动读取并度量B1S,并将得到的B1S完整性度量值与存储于可信密码模块非易失性存储器中的B1S度量参考值进行比较;若两值相等,则B1S完整性度量成功,执行步骤22,并将得到的B1S完整性度量值与度量初始值进行杂凑扩展得到的B1S的新PCR值,将B1S的新PCR值写入对应的平台配置寄存器中;否则,执行步骤23;其中B1S的新PCR值=HASH(度量初始值I B1S完整性度量值)=(度量初始值I I B1S度量参考值);B10S度量参考值指的是B1S没有被篡改时,对B1S程序进行HSAH杂凑运算得到的值;B1S完整性度量值指的是对该终端B1S程序进行HSAH杂凑运算得到的值; 步骤22:CPU启动,依次执行嵌入于B1S、OS Loader、0S内核中的度量程序,通过调用可信密码模块对OS Loader、0S内核及应用程序进行完整性度量,若完整性度量成功则终端启动度量完成,并将各度量值与度量初始值进行杂凑扩展后写入对应的平台配置寄存器中;若度量失败则执行步骤23; 步骤23:退出可信计算终端的启动度量,告警并申请可信计算终端所有者进一步授权操作。4.根据权利要求1所述的一种可信计算终端完整性度量、证明方法,其特征在于所述步骤3具体包括: 步骤31:位于OS内核的运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器将内存空间划分为多个固定大小的块空间,执行步骤32; 步骤32:调用钩子函数将待度量的应用程序映射到内存空间,执行步骤33; 步骤33:运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器,将装载有待度量应用程序的块空间属性设置为只读,执行步骤34; 步骤34:运行度量代理模块调用可信密码模块TCM对应用程序进行完整性度量;若完整性度量成功,则执行步骤35,并将得到的应用程序完整性度量值进行杂凑扩展得到应用程序新扩展完整性度量值,将该应用程序新扩展完整性度量值写入对应的平台配置寄存器中;否则,应用程序不能执行,运行度量代理告警并申请终端所有者进一步授权操作;其中应用程序新扩展完整性度量值=HASHn(HASHn-l(."HASHi (…HASH2(HASH1(应用程序度量初始值I I应用程序完整性度量值I) I I应用程序完整性度量值2)…I I应用程序完整性度量值i )…)应用程序完整性度量值n-11 I应用程序完整性度量值η),其中η=总度量次数,HASHi表示第i次杂凑运算,应用程序完整性度量值i表示第i次对该终端应用程序进行HSAH杂凑运算得到的值;度量初始值指的是验证方与该可信计算终端的共享密钥; 步骤35:运行度量代理模块获得超级用户权限