可信计算技术是一种基于密码学的计算机安全技术,其核心目标是确保硬件、操作系统、应用等组件的完整性,从而确保业务运行在可信的环境中。与等保1.0相比,等保2.0更加强调可信计算的应用,从第一级到第四级均提出了可信验证的要求。本文带您深入了解可信计算相关技术,并介绍浪潮信息云峦操作系统KeyarchOS在可信计算领域的实践探索。
1 可信的定义及可信根
目前,国内关于可信的定义为:可信计算系统是能够提供可靠性、可用性和安全性的计算机系统;国外TCG(Trusted Computing Group,可信计算组织)关于可信的定义为:一个可信的实体意味着它的行为总是以预期的方式、达到预期的目标。
可信计算技术的核心是可信根。可信根即信任根,是可信计算系统中信任的起点。可信根包括3个根:可信度量根(Root of Measurement,RTM),负责完整性度量;可信存储根(Root of Storage,RTS),可以屏蔽可信根外部实体访问可信根内部的存储;可信报告根(Root of Report,RTR),负责报告可信存储根的内容。
可信根一般以密码芯片的硬件形态存在。目前,关于可信根具体实现有国内外两套标准,国内标准为可信密码模块(Trusted Cryptography Module,TCM)标准,国外为TCG主导的可信平台模块(Trusted Platform Module,TPM)标准。国际标准化组织(ISO)和国际电工委员会(IEC)的联合委员会已经批准将TPM2.0规范作为国际标准ISO/IEC 11889:2015进行发布。
2可信根介绍
下图所示是遵循TPM2.0/TCM规范的可信根芯片功能构成,具备密码学的功能,其内部具备可信度量、可信存储和可信验证等可信计算功能。可信根芯片内部功能结构如图所示。
图 可信根功能构成
- I/O寄存器:用于与CPU通信,实现指令的接收与响应的发送;
- 密钥算法引擎:可信根芯片中密码学算法的实现核心,用于生成密钥、执行加解密、数字签名等操作。可信根支持自定义密码算法扩展,目前国内生产销售和使用的TPM2,0均支持中国商用密码算法;
- PCR:Platform Configuration Register,平台配置寄存器,用来记录系统运行状态的寄存器,是构建度量链的关键组件。PCR为易失性存储,可信根芯片上电后会恢复至默认值,且PCR不支持“写”操作,只支持“扩展”操作,因此PCR中不仅包含了各个组件内容的完整性信息,还包含了各个组件运行顺序的信息;
- 非易失性存储:Non-volatile RAM(NV RAM),可信根芯片中的非易失性存储空间,存储容量由芯片厂商决定,但受限于芯片制程,空间只有几百至几千字节,且该空间的读写等操作需要授权执行,因此,该空间一般用于存储敏感数据;
- 授权验证模块:可信根规范规定可信根芯片中的资源(如密钥、NV RAM等)需要授权使用或访问,在使用或访问可信根中的资源时需要输入对应的授权信息,授权信息验证通过以后才可使用或访问这些资源;
- 控制域管理:控制域指可信根规范中的Hierarchy,可信根规范规定资源按控制域管理,不同的控制域具备不同的功能,如Lockout Hierarchy管理与死锁相关的资源,Endorsement Hierarchy管理与背书、身份等相关的资源;
- 随机数生成器:可信根支持生成随机数,可信根随机数生成器内置了熵采集器,因此可以生成真随机序列。可信根中密钥的生成也依赖随机数生成器;
- 时钟计数器:可信根支持抗字典攻击,依赖时钟计数器提供死锁机制;
- 密码杂凑引擎:可信根芯片中密码学杂凑算法实现的核心,目前国内使用的TPM2.0支持中国商用密码算法及SHA256等国际通用杂凑算法。
本文介绍的可信启动功能主要依赖可信根控制域管理功能、授权验证功能、密钥算法功能、PCR功能,因此对这四个功能做详细说明。
2.1 可信根控制域
可信根中资源由不同的控制域管理,密钥、存储等资源在创建时需要归属到具体的域中,不同域中的资源相互隔离。
图 TPM2.0 控制域
- Platform控制域:对可信根具有最高的控制权限,可以将可信根芯片恢复至初始化状态 - 使用者为计算机固件;
- Endorsement控制域:维护与可信根身份相关的资源 – 使用者为系统管理员;
- Owner控制域:维护用户资源 – 使用者为系统管理员;
- Lockout控制域:维护死锁、计数器等资源 、不能创建新的资源,内部的资源是芯片设计时固定的–使用者为系统管理员。
2.2 可信根授权机制
可信根每一实体的使用都需要授权,授权方式在实体创建时确定。授权方式分为两类:
口令授权:类似用户名/密码的方式,输入正确的口令才能使用实体;
策略授权:依赖会话操作,只有按预期执行具体与授权相关的操作才能生成正确的授权值使用实体。
注:TPM中每一资源都可称为实体,控制域是实体、创建的密钥是实体、开辟的存储空间是实体。一直存在的实体(比如控制域)授权值和授权策略内容初始状态为空,后期可以改变,需要执行创建操作的实体(比如密钥、存储空间等)授权方式、授权值在创建时确定。
2.3 可信根密钥管理体系
可信根中密钥采用多级密钥管理方式,密钥创建时,需要指定父密钥,密钥导出到TPM外部时,私钥部分(或对称密钥的私有信息)被父密钥加密保护。因此,TPM生成的密钥,私钥(或对称密钥)只能由TPM使用。
- PrimaryObject:密钥体系中的根密钥,只能驻留在TPM中,无法被导出。根密钥为非对称算法密钥。
- Object:一般密钥,创建后需要先执行加载操作才能使用,一般按算法分为对称密钥、非对称密钥。
图 可信根密钥管理体系
2.4 可信根PCR度量链及事件日志
度量链:在计算机启动时,当前运行时组件将控制全交给下一组件时,先计算下一组件的Hash值,并“扩展”至指定PCR(Platform Configuration Register,平台配置寄存器)中。
图 基于可信根的度量链
事件日志:记录每一组件名称、类型、Hash值等信息,该信息存储在内存中,操作系统中可读取该内容,获取每一组件的度量信息。
图 事件日志例
3 基于可信根的可信启动
可信启动指在计算机启动时验证启动组件的完整性。计算机启动时会构建度量链,在计算机运行的某一阶段(如引导操作系统内核前),验证本次构建的度量链是否与白名单一致,以此来判断启动组件是否完整可信。
本文分享一种基于可信根的可信启动实现思路:
- 计算机启动的时候后会通过度量链机制将计算机组件的完整性信息记录至PCR中;
- 可信根授权机制中,可以以某些PCR中的值为输入计算策略值,这样就将组件的完整性信息转换为了授权信息;
- 创建密钥,密钥的授权信息为根据PCR值计算出的授权信息,这样就将密钥的可用性与组件的完整性绑定;
- 使用密钥加密系统中的关键数据(如分区配置等),这样就将操作系统能否启动与组件完整性绑定;
- 后续启动时,在BootLoader阶段,会依据PCR中记录的组件完整性信息授权使用密钥恢复关键数据,如果密钥可用,则意味着所有组件可信,操作系统正常启动,如果有不可信的组件,则密钥不可用,无法恢复系统关键数据。
4 KeyarchOS可信计算应用实践
基于可信根的可信启动
浪潮信息操作系统KeyarchOS内置了KTrusted可信增强软件,KTrusted采用基于硬件可信根的可信度量技术,构建从服务器上电到操作系统启动的度量链;同时提供基于可信状态的操作系统引导控制、操作系统可信启动控制、操作系统可信报告查询等功能。
KTrusted可信增强软件支持可信验证策略和基于可信状态的启动控制策略两种策略模式。
当处于可信验证策略模式下时,在引导操作系统内核前,KTrusted可信增强软件会基于可信根验证硬件(如固件、板卡OpROM等)、软件(包含操作系统内核、初始化文件系统的文件)的完整性,验证通过,正常引导操作系统运行,如图4-1所示。当检测到不可信项存在时,KTrusted可信增强软件会提示完整性被破坏的信息,仍正常引导操作系统,如下图所示:
图 完整性验证通过示例
图 可信验证策略模式下完整性验证失败示例
当处于基于可信状态的启动控制策略模式下时,在引导操作系统内核前,KTrusted可信增强软件检测到不可信项存在时,KTrusted可信增强软件会提示完整性被破坏的信息,且中断操作系统引导,操作系统用户输入策略部署时生成的特权启动码才可正常引导操作系统,如下图所示:
图 基于可信状态的启动控制策略模式下完整性验证失败示例
KTrusted可信增强软件支持查询可信报告,当操作系统引导阶段检测到不可信项存在时,用户登录操作系统后可通过可信报告查询功能查询具体不可信项,如下图所示:
图 可信报告查询示例