一种适用于电力系统通用计算平台的可信计算密码平台的制作方法_2

文档序号:9708672阅读:来源:国知局
还保证了信任 链在软件系统上的传递。运行于可信计算平台上的应用借助于可信计算密码平台提供的可 信服务,在可信计算环境中完成可信的应用功能和服务。
[0050] ?可信计算密码模块
[0051] 可信计算密码模块有硬件板卡和软件两种形态,根据服务器的安全需求级别采用 不同形态的可信计算密码模块,如下表所示:
[0052]表1可信计算密码模块形态
[0053]
[0054]硬件板卡形态的可信计算密码模块为可信软件系统提供硬件的密码算法和策略 存储、保护与更新机制:
[0055] (1)密码算法:为可信软件系统提供高性能SM2和SM3算法;
[0056] (2)策略保护:存储可信软件系统策略文件的摘要值,为策略文件提供完整性保 护,避免恶意篡改;
[0057] (3)操作系统可信启动:提供CPU实模式的驱动,为系统引导阶段提供针对内核的 静态度量支撑。
[0058] 软件形态的可信计算密码模块为可信软件系统提供软件形态的密码算法和策略 存储、保护与更新机制:
[0059] (1)密码算法:为可信软件系统提供高性能SM2和SM3算法;
[0060] (2)策略保护:保护可信软件系统策略文件的摘要值,为策略文件提供完整性保 护,避免恶意篡改。
[0061] 硬件板卡形态可信计算密码模块芯片由执行引擎、非易失性存储单元、易失性存 储单元、随机数发生器、密码算法引擎、密钥生成器、定时器等部分组成,如图2所示,并由输 入输出桥接单元把将这些功能组件映射到片内CHJ的地址空间。
[0062] 可信计算密码模块方案中设计了独立于CPU的供电系统,所以可信计算密码模块 可以作为主设备先于CPU启动,从而可以作为主设备运行,成为整个系统可信度量的起点, 度量包括BIOS在内的所有部件,建立以可信计算密码模块为起点的信任链。
[0063] 可信计算密码模块内部执行引擎是可信计算密码模块的运算执行单元。可信计算 密码模块内部的非易失性存储单元分为程序存储单元、数据存储单元和可信寄存器组三部 分,共设计1280字节的NV寄存器。其中,程序存储单元存储固件和控制程序"数据存储单元 存储密钥、证书、日志和其他保密数据。可信寄存器组包括:模块标识寄存器、版本号寄存 器、电源与状态管理寄存器、使用状态寄存器、当前用户身份识别寄存器、平台配置寄存器、 平台绑定寄存器、用户管理寄存器、非易失存储器(NV)。
[0064] 可信计算密码模块内部的易失性存储单元包括:平台配置寄存器和运算过程中开 辟的数据缓冲区。用户注销时,重要数据存储到非易失存储器,清零易失性存储单元中用户 空间。其中平台配置寄存器PCR是一个设置在可信计算密码模块内部的一组寄存器,共有 128个256位受保护的平台配置寄存器(PCR),用于存储完整性度量值,可扩展到256个。
[0065]可信计算密码模块通过控制裁决引擎,实现对硬件资源的访问控制的裁决功能。 裁决结果或者信号,通过GPI0信号线发送给可信计算平台。
[0066] ?可信软件系统
[0067]可信软件系统作为可信计算密码平台的一部分,由下列组件组成:可信计算密码 驱动模块、度量模块和审计模块。可信软件系统主要实现信任链的传递和应用软件以及不 可控操作系统的度量和审计。可信计算密码驱动模块完成对可信计算密码模块设备的管理 功能并提供驱动,由可信计算密码模块芯片厂商提供。可信软件系统中的度量模块主要实 现可信计算密码平台对后续软件的完整性度量,这些软件包括:核心动态加载模块、应用程 序、动态库、不可控操作系统核心,以及不可控操作系统上的应用程序等。
[0068]软件的完整性度量包含以下三个过程:
[0069] 1)软件供应商在发布应用程序或其更新的同时,提供组成该应用程序的可执行文 件(指包含代码的文件)对应的散列值的清单,并对每个散列值签名。操作系统在应用程序 安装或更新后,将通过签名验证的"文件-散列值对"同步至应用程序摘要数据库(ADDB)。该 数据库应使用存储主密钥保护。
[0070] 2)操作系统核心在程序文件或共享库文件被执行前,调用可信计算密码模块请求 可信计算密码模块度量相应文件。可信计算密码模块对指定文件做散列运算,并返回计算 结果。若需针对该应用程序的完整性报告,则还需将上述计算所得散列值存储在特定的 PCR,并记录度量存储日志(SML)。
[0071] 3)操作系统将可信计算密码模块计算所得散列值与保存在ADDB中的预期值比较, 若相符则执行相应代码,否则中止应用程序的执行。
[0072] 可信软件系统中的审计模块的主要作用是截获上层应用或者不可控0S的特定行 为,并进行行为审计和分析,并触发预定的响应动作。
[0073] 当上层应用或者不可控操作系统需要进行启动程序、加载动态库或者加载内核模 块等行为时,审计模块对行为对象(包括可执行程序,动态库,内核模块)的代码段,进行哈 希运算,并验证其哈希值是否与预期值相同,根据验证的结果来判断是否允许该行为继续 进行。
[0074] 对于直接运行在可信内核上的应用程序,审计点直接设置在核心中,对于不可控 操作系统,可以通过截获其系统调用(一般通过软中断方式)、中断等方式实现审计。
[0075] ?静态度量
[0076]静态度量是由度量代理在预定的度量策略支持下用适当的算法对度量对象进行 以完整性为主的表征过程。如图3所示,静态度量的主要任务为:
[0077] (1)确定预期断言。对度量对象所期望的结果进行恰当的表述,即被度量的对象的 完整性。
[0078] (2)制定度量策略。制定可行的度量方法对度量对象进行完整性判断。
[0079] (3)进行度量评判。根据度量结果,对度量对象进行可信性判断,给出判断结果。
[0080]静态度量的内容包括系统中的可执行程序、动态库和内核模块。静态度量对上述 三项文件进行文件内容的哈希计算,并将计算结果与预期结果进行比较,来保证其可信性。 [0081 ]采用对度量对象(包括可执行程序,动态库,内核模块)的代码段,进行哈希运算, 并验证其哈希值是否与预期的相同,以此来判断度量对象的完整性是否遭受破坏。
[0082] 可执行程序的度量方法:当启动程序时,首先截获该程序的信息,调用算法计算该 程序代码段的哈希值,并将计算后的哈希值与预期值做比较,以此来判断该可执行程序是 否被篡改。
[0083] 动态库度量方法:当加载动态库时(包括程序启动所必须的动态库,以及运行时动 态加载的动态库等),系统会通过映射函数将动态库映射到内存中,如果动态库已经在内存 中,则不需要重新加载,进而也不会进行度量。当初次加载动态库时,首先截获该动态库的 信息,调用算法计算该程序代码段的哈希值,并将计算后的哈希值与预期值做比较,以此来 判断该可执行程序是否被篡改过。当程序退出时,会释放一些自身使用的动态库,但仍然会 有一些动态库驻留系统内存,供其它程序使用,不会被释放,所以当重新启动程序时,这些 已经驻留内存的动态库不需要再次度量。
[0084] 模块度量方法:模块加载包括两种情况:第一种,当Linux系统启动时,需要加载操 作系统启动运行所必须的模块。第二种,系统启动后,当系统有需求时(例如,当插入U盘), 操作系统会动态加载所需的模块。这两种情况对linux系统内核来说是不区分对待的,即, 不论哪种方式加载模块,都由同一系统调用来处理(即sy S_init_m〇dule()系统调用)。所以 模块度量即在该系统调用处,当加载模块时,该系统调用会截获模块的代码段、长度等信 息,再将这些信息传递给度量代理,有度量代理计算该模块的哈希值,并与预期值进行比 较,以此来判断该模块是否被篡改过。
[0085] ?动态度量
[0086]在静态度量功能保证系统运行对象初态可信的基础上,动态度量机制在度量对象 启动前完成对度量对象预期值的收集,并依据收集的预期值,在系统运行中对其状态进行 验证。如图4所示,动态度量机制能够对运行状态中的内核关键数据及进程状态进程度量。 其中,度量对象包括操作系统内核的代码段、只读数据段、关键跳转表和应用层的进程代码 段。除了为可信证明机制提供支撑外,内核度量功能主要服务于可信软件系统的自身保护 机制,应用度量功能主要服务于访问控制机制。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1