3.2 平台体系结构
可信计算密码支撑平台对计算系统从底层硬件/固件到操作系统再到应用层进行了全新的安全体系架构设计,由可信密码模块、安全BIOS、信任链系统和TCM服务模块等组成,其功能架构如图3-2所示。从图3-2中可以看出,可信计算密码支撑平台是以密码技术为基础,以可信密码模块为可信根,通过如下三类机制及平台自身安全管理功能,来实现平台密码支撑服务功能的。
图3-2 可信计算密码支撑平台功能架构
1)以可信度量根为起点,按系统平台固件、操作系统各部件运行时序计算完整性度量值,建立系统平台信任链,确保系统平台可信。
2)可信报告根标识平台身份的可信性,具有唯一性,以可信报告根为基础,实现平台身份证明和完整性报告。
3)基于可信存储根,实现密钥管理、平台数据安全保护功能,提供相应的密码服务。
可信计算密码支撑平台各组成部分都有其特有功能设计,各模块在发挥各自功能的同时,须协同工作才能实现密码支撑平台的强大密码服务功能。
下面简要介绍各个模块的功能结构和设计原理。
3.2.1 可信密码模块
可信密码模块是构建可信计算密码支撑平台必备的关键基础部件,能够建立独立的、安全的、以密码算法功能为核心的运算环境,并以特定的LPC I/O接口与主机平台进行通信连接,为主机平台构建可信计算功能提供支撑。
TCM是硬件和固件的集合,既可采用独立封装形式,又可采用IP核方式和其他类型芯片集成在一起,提供TCM功能。
TCM作为构建可信计算密码支撑平台功能体系的核心基础模块,须拥有一定的抗物理攻击以及防篡改能力和机制。
1. TCM体系结构
TCM在体系结构上划分为密码计算区、受保护存储区、主计算区和I/O接口,如图3-3所示。
图3-3 可信计算密码模块体系结构
(1)密码计算区
密码计算区集成有4个密码算法引擎,包括:公钥密码SM2引擎、杂凑算法SM3引擎、对称密码算法SM4引擎和随机数算法引擎,其中每个密码算法引擎功能设计如下。
SM2引擎:产生SM2密钥对和执行SM2加/解密、签名运算的单元。
SM3引擎:执行杂凑运算的单元。
SM4引擎:执行SM4对称密码运算的单元。
随机数算法引擎:生成随机数的单元。
此外,还有一个基于SM3引擎的计算消息认证码算法HMAC引擎。
这些密码算法引擎都采用国家密码管理局提供的密码算法,在GM/T 0012—2012《可信计算可信密码模块接口规范》中列出了密码算法实现要求。
(2)受保护存储区
受保护存储区是由非易失性存储器构建的,它们由存储永久数据的存储单元构成。
受保护的存储区涵盖TCM固件存储区、主密钥存储区、平台“指纹”存储区,主要用于可信密码模块内部安全地保存密钥、授权数据和数字证书,实现平台数据保护、信任度量存储、用户证书管理等功能。
(3)主计算区
主计算区由执行引擎CPU和内存构成。
执行引擎CPU:为TCM的运算执行单元。
内存:由易失性存储器构成,是TCM运行时临时数据的存储单元。
(4)I/O接口
I/O接口指TCM的输入/输出硬件接口,TCM与外部物理组件的连接总线遵循LPC总线规范。
2. TCM功能
(1)TCM通过3个功能实现用户计算环境的可信
1)平台可信性。TCM在系统启动时就开始工作,监控系统程序的装载,一旦发现某个程序状态异常就发出警报乃至禁止其运行,从而保证了系统中程序完整性不被损害。
2)用户身份证明。TCM中存储着标识平台身份的密钥,将在用户需要证实自己身份时,通过TCM签名或者数字证书的相关机制,向外部表明唯一性身份。
3)数据加密保护。TCM保证在一个平台上进行加密的数据只能在本平台上进行解密和处理,从而使机密数据被绑定在本平台上,即使密钥被存放到其他平台上,也不能解密其加密的数据,从而可以防止物理的破坏和攻击。
(2)安全可信根
TCM定义了3个安全可信根,分别为可信度量根(Root of Trusted for Measurement,RTM)、可信存储根(Root of Trusted for Storage,RTS)和可信报告根(Root of Trusted for Reporting,RTR),这3个信任根的关系如图3-4所示。
图3-4 可信根之间的关系
建立信任根是构建可信计算密码支撑平台的基础和关键,TCM通过构建3个信任根使其成为可信计算密码支撑平台的信任根,从而支撑可信计算密码支撑平台安全功能体系建立。
可信根功能机制定义如下。
(1)可信度量根:一个可信的完整性度量单元,是可信计算平台内进行可信度量的基础,提供密码学机制,有序度量平台的状态。
(2)可信存储根:指存储主密钥,是可信计算平台内进行可信存储的基础,提供密码学机制,保护TCM放置在外部的数据信息。
(3)可信报告根:指密码模块密钥,是可信计算平台内进行可信报告的基础,提供密码学机制,签署TCM的状态和数据信息。
简而言之,可信度量根其实为系统运行起点的一个特定软件模块,可信存储根由TCM和存储主密钥SRK构成,可信报告根由TCM和密码模块密钥构成。
可信计算密码支撑平台以可信密码模块为可信根,通过建立计算机系统平台信任链、标识平台身份、密钥及数据安全存储,实现平台安全功能体系。
3.2.2 TCM服务模块
可信密码模块定义了一个具有存储保护和执行保护的子系统,该子系统将为计算平台建立信任根基,并且其独立的计算资源将建立严格受限的安全保护机制。为防止TCM成为计算平台的性能瓶颈,将子系统中需执行保护的函数与无须执行保护的函数划分开,将无须执行保护的功能函数由计算平台主处理器执行,而这些支持函数构成了TCM服务模块,简记为TSM。
TCM服务模块软件架构如图3-5所示,包括TCM应用服务、TCM核心服务和TCM设备驱动库三个组成部分。
图3-5 TCM服务模块软件架构
1)TCM服务提供者:向应用程序提供TCM的服务,提供高层的TCM函数,使应用程序只关注它本身的特性,依靠TSP执行TCM提供的可信函数。TSP还提供了一些方便功能操作的辅助函数,这些函数不是由TCM提供的,如签名验证功能。
TSP位于应用程序进程内,使每个应用程序看起来像拥有一个自己的TSP。多进程的操作系统中,会有多个TSP实例运行在平台上。
一个TSM的执行需要有TSP。它们负责对应用程序间信息和数据的传输提供保护;提供C接口,和对应用程序的动态链接或静态链接。运行在Windows操作系统的TSM也可以提供COM接口。
2)TCM核心服务:位于TSM服务提供者(TSP)层和TCM设备驱动库(TDDL)层之间,以系统服务的形式存在,为TSP等上层应用提供TCM使用和密钥管理等功能接口。
TCS按功能的不同可分为基本信息管理、密钥管理、密钥缓存管理、事件管理、授权操作、完整性操作、迁移操作、密码操作、身份证书操作、设备操作、CTCMNegotiate类11个模块,其中,基本信息管理、密钥管理和事件管理同属于TCS管理器,密钥操作、授权操作、完整性操作、迁移操作、密码操作、身份证书操作、设备操作同属于TCM操作。
3)TCM设备驱动库:位于TCM核心服务(TCS)层和TCM设备驱动(TDD)层之间,主要目的是在TDD之上提供一个标准的接口,屏蔽各设备I/O控制信息的差异,完成指令和状态信息在用户模式和内核模式间的传递。
TSM作为芯片和用户应用之间的平台软件,是芯片和用户之间信息互通的桥梁。它支持安全芯片向上提供平台认证、密码学服务和芯片管理等重要功能。TSM内部涉及核心的对象和属性管理、上下文管理、授权与认证、安全操作、密钥管理和TCM管理等模块,分别位于Kernel模式(TCM驱动)和用户模式,并在用户模式中分为系统进程(TCS)和用户进程(TSP),是一套非常复杂的平台软件系统。可信计算平台只有通过TSM才能调用TCM芯片的各项安全功能。
TSM功能划分如图3-6所示。
图3-6 TSM功能划分
TSM主要为用户使用TCM基础资源提供支持,由多个部分组成,每个部分间的接口定义应具有互操作性。TSM提供了规范化的函数接口。
TSM的设计目标:
1)为应用程序调用TCM安全保护功能提供一个入口点;
2)提供对TCM的同步访问;
3)向应用程序隐藏TCM所建立的功能命令;
4)管理TCM资源。
3.2.3 安全BIOS
针对每类平台都须设置相应的安全BIOS,安全BIOS可划分为以下两个模块。
1)BIOS启动模块(BIOS Boot Block,BBB):该模块作为BIOS和整个平台的启动模块。在平台启动时,BBB是可信计算支撑平台建立的基础,作为度量其他硬件部件和软件部件的基本根。
2)增加的ROM Driver,ROM Driver提供BIOS对TCM设备固件的访问,主要目的是完成BIOS(包括DOS)与TCM之间的数据交互,完成指令和状态信息在系统和固件之间的传递。
安全BIOS是建立静态信任链的基础。