一种可信计算终端完整性度量、证明方法及装置的制造方法
【技术领域】
[0001]本发明涉及可信计算领域,尤其是一种可信计算终端完整性度量、证明方法及装置。
【背景技术】
[0002]随着云计算、物联网和移动互联等计算机网络技术的快速发展和深度应用,目前最突出的三大安全威胁是恶意代码攻击、信息非法窃取、数据和系统的非法破坏,其中,以用户私密信息为目标的恶意代码攻击超过传统病毒成为最大的安全威胁。
[0003]传统的防火墙、入侵检测、病毒防御和网络隔离等网络安全防护手段都侧重于被动的保护网络、服务器的信息安全。而相对脆弱的终端就越来越成为信息系统安全的薄弱环节。针对这些系统安全需求和各类攻击手段,可信计算从计算机体系结构着手,从硬件安全出发通过完整性度量主动地建立一种信任传递体系以保证终端可信。
[0004]在具体实现方面,可信计算组织TCG的可信计算思想是通过硬件平台上引入可信平台模块TPM(Trusted Platform Module)来提高计算机系统的安全性,这种思想得到了产业界的普遍认同。我国思路与TCG类似,以可信密码模块TCM为基础,通过主动完整性度量构建可传递信任链,保证整个计算机终端(PC、服务器、移动手持设备)各部件版本信息、配置参数、操作系统和程序等的完整性,确保计算机终端按照预期的行为执行。在保证计算终端可信的前提下,通过扩展远程证明技术(身份证明、完整性证明)和可信网络连接技术,进一步保证整个网络信息环境的可信。
[0005]目前,无论是TCG规范还是我国的可信计算规范,都只描述了可信终端平台启动期间的完整性度量方法,即从可信终端加电开始到操作系统启动之前静态代码和数据的度量,而对运行于操作系统之上的应用软件的完整性度量却没有给出明确指导。AMD、Intel等公司基于动态度量根DRTM技术,通过对需要度量的程序代码建立一个隔离的安全可执行环境,理论上可以实现任意时刻对任意代码(包括应用程序)的完整性度量。但隔离的安全可执行环境建立需要采用支持DRTM的CPU架构和专用指令,并需为内存提供专门的硬件级保护。同时,在进行代码度量时,禁止了页表机制和所有中断,导致其他应用程序无法运行。
[0006]在完整性证明过程中,目前通常采用:计算终端向验证方发送完整性度量PCR值的签名和相关完整性度量日志信息,验证方通过分析度量日志信息和PCR签名判断该PCR值是否来自真实TCM/TPM的正确度量过程。但是黑客可以通过截取度量日志信息中记录的实际度量值或计算终端开机启动后生成的第一次PCR的值,并结合穷举测试激励的方法破译终端的重要版本、配置和固件信息。
【发明内容】
[0007]本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种可信计算终端完整性度量、证明方法及装置,在不增加额外硬件要求和专用指令的情况下,为应用程序搭建了一个隔离安全的完整性动态度量环境,同时保证在度量过程中其他应用程序的并行无障碍运行。在完整性证明过程中隐藏了计算终端各部件的实际度量值,有效阻止黑客通过实际度量值破译终端的版本、配置和固件等信息。
[0008]本发明采用的技术方案如下:
一种可信计算终端完整性度量、证明方法包括:
步骤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次的完整性度量值。
[0009]进一步的,所述步骤I中的度量参考值和度量初始值只在可信计算终端交付或终端部件增加、更新时通过授权数据结合物理现场的方式注入到可信密码模块的非易失性存储器中;其中注入的度量初始值始终存储在可信密码模块内不能被读出,且每次可信计算终端开机启动时,度量初始值将被重新写入可信密码模块的平台配置寄存器中。
[0010]进一步的,所述步骤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杂凑运算得到的值。
[0011]步骤22:CPU启动,依次执行嵌入于B10S、0S Loader、0S内核中的度量程序,通过调用可信密码模块对OS Loader、0S内核及应用程序进行完整性度量,若完整性度量成功则终端启动度量完成,并将各度量值与度量初始值进行杂凑扩展后写入对应的平台配置寄存器中;若度量失败则执行步骤23; 步骤23:退出可信计算终端的启动度量,告警并申请可信计算终端所有者进一步授权操作。
[0012]进一步的,所述步骤3具体包括:
步骤31:位于OS内核的运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器将内存空间划分为多个固定大小的块空间,执行步骤32;
步骤32:调用钩子函数将待度量的应用程序映射到内存空间,执行步骤33。
[0013]步骤33:运行度量代理模块获得超级用户权限,设置MPU/MMU内存控制寄存器,将装载有待度量应用程序的块空间属性设置为只读,执行步骤34。
[0014]步骤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:应用程序运行完毕后,需要定时释放所占据的内存空间,以便下次运行时重新加载。
[0015]进一步的,所述步骤4具体包括:
步骤41:当可信计算终端需要提供完整性证明时,只需将储存于配置寄存器PCR中的扩展完整性度量值和总度量次数进行签名后发送给验证方,完整性验证方验证PCR中的扩展完整性度量值和总度量次数的签名,若签名验证通过执行步骤42,否则执行步骤43。
[0016]步骤42:完整性验证方通过执行杂凑算法判断可信计算终端的完整性;判断依据为:平台配置寄存器的扩展完整性度量值是否等于HASHn(HASHn-l (…HASHi (…HASH2(HASHl(度量初始值I I度量参考值)I I度量参考值)...| I度量参考值)...)度量参考值I I度量参考值),其中η=总度量次数,HASHi表示第i次杂凑运算;若两个相等,则完整性验证成功;否则,执行步骤4.3;其中度量参考值指的是可信计算终端部件没有被篡改时,对其进行HSAH杂凑运算得到的值;完整性度量值指的是对可信计算终端部件进行HSAH杂凑运算得到的值;所述部件包括B10S、0S Loader、0S内核以及应用程序。
[0017]步骤43:完整性验证失败,验证方将失败结果告知可信计算终端。
[0018]一种可信计算终端完整性度量、证明装置包括:
可信密码模块,用于存储可信计算终端各部件的度量参考值和度量初始值;度量参考值指的是可信计算终端部件没有被篡改时,对其进行HSAH杂凑运算得到的值;所述部件包括B10S、0S Loader、0S内核以及应用程序;度量初始值指的是验证方与该可信计算终