可信计算

更新时间:2023-11-17 12:30:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

J I A N G S U

U N I V E R S I T Y

可信计算密码支撑平台完整性度量和密码机制的

研究

学院: 计算机科学与通信工程学院 班级: 信息安全1202 学号: 3120604032 姓名: 肖雪

本文从可信平台,可信计算密码支撑平台完整性度量,密码机制,TCG的密钥管理体系分析,这四个方面来研究可信计算密码支撑平台完整性度量和密码机制。研究可信计算密码支撑平台和 TCM可信密码模块的组成结构,分析密码算法的支撑作用和可信计算密码支撑平台的完整性度量机制。分析它的密码机制,指出了其密码机制上的特色与不足。

一.可信平台

我们认为,可信计算机系统是能够提供系统的可靠性 、可用性、信息和行为安全性的计算机系统 。

1.可信计算平台的功能与应用目标

可信计算组织认为,可信计算平台的主要应用目标是风险管理、数字资源管理 、电子商务和安全监控和应急相应。为了实现这些目标,可信计算平台至少需要提供以下基本功能:数据安全保护、平台身份证明、完整性测量 、存储与报告。

2.可信平台模块的逻辑结构

TCG定义了可信平台模块 (TPM)的逻辑结构,它是一种 SoC(System on Chip)芯片,由CPU、存储器 、 I/O、密码运算处理器 、随机数产生器和嵌入式操作系统等部 件组成,完成可信度量的存储、可信度量的报告、系统监控、密 钥产生 、加密签名、数据的安全存储等功能。由于可信平台模块用作可信计算平台的信任根,所以它 应当是物理安全和管理安全的。

I/O 密码协处理器 密钥产生 HMAC引擎 随机数产生 SHA—1引擎 电源检测 Opt—Ln 执行引擎 非易失性存储器 易失存储器

图 1 TCG的 TPM结构如图 1 所示。

二.可信计算密码支撑平台完整性度量

1 功能和结构

《可信计算密码支撑平台功能与接口规范》,定义了可信计算密码支撑平台的密码算法、密钥管理、证书管理、密码协议、 密码服务等应用接口规范,适用于可信计算密码支撑平台相关产品的研制、生产、测评和应用开发。

1.1平台功能

可信计算密码支撑平台在计算系统中的作用如图2所示,平台主要提供完整性、身份可信性和数据安全性的密码支持,密码算法与平台功能的关系如图3 所示。

图 2 可信计算密码支撑平台与计算系统

平台完整性 平台身份可信 平台数据安全保护 密码算法 SM3 SM2 SMS4 随机数发生器

图 3 密码算法与平台功能

平台完整性:利用密码机制,通过对系统平台组件的完 整性度量、存储与报告,确保平台完整性。

平台身份可信:利用密码机制,标识系统平台身份,实 现系统平台身份管理功能,并向外部实体提供系统平台身份 证明。

平台数据安全保护:利用密码机制,保护系统平台敏 感数据,其中数据安全保护包括平台自身敏感数据的保护 和用户敏感数据的保护,另外也可为用户数据保护提供服 务接口。

1.2 平台结构

平台结构主要分为 TCM 和 TSM。 TCM 是可信计算密码支撑平台必备的关键基础部件,提供 独立的密码算法支撑。TCM 定义了一个具有存储保护和执 行保护的子系统,该子系统将为计算平台建立信任根基,并且其独立的计算资源将建立严格受限的安全保护机制。为防止TCM 成为计算平台的性能瓶颈,将子系统中需执行保护 的函数与无需执行保护的函数分开,将无需执行保护的功能函数由计算平台主处理器执行,这些功能函数构成 TSM。 TCM 结构如图 3所示,各部件功能如下:

I/O SMS4 引擎 SM3引擎 SM2 引擎 随机数发生器 HMAC引擎 执行引擎 非易失存储器 易失存储器

图 3 TCM 结构

I/O:TCM 的输入输出硬件接口;

SMS4 引擎:执行 SMS4 对称密码运算;

SM2 引擎:产生 SM2 密钥对,执行 SM2 加/解密、签名 运算; SM3 引擎:执行杂凑运算; 随机数产生器:生成随机数; HMAC 引擎:基于 SM3 引擎,计算消息认证码; 执行引擎:TCM 的运算执行部件;

非易失性存储器:存储永久数据的存储部件;

易失性存储器:TCM 运行时的临时数据存储部件。

2完整性度量

TCG 定义“可信”:如果一个实体的行为总是以期望的方式,达到预期的目标,我们就认为它是可信的。

可信平台的可信根分别是:RTM(可信度量根),RTS(可信存储根),RTR(可信报告根)。RTM 是能进行完整性度量 的计算引擎。RTS 是能保持完整性度量摘要值及其顺

序的计 算引擎。RTR 是能可靠报告 RTS 所持有信息的计算引擎。可信计算密码支撑平台以 TCM 为可信根,通过以下三种机制及平台自身安全管理实现平台安全功能:

(1)以RTM 为起点计算系统平台完整性的度量值,建立计算机系统平台信任链,确保系统平台可信。

(2)RTR 标识平台身份的可信性且有唯一性,以 RTR为基础实现平台身份证明和完整性报告。

(3)基于 RTS 实现密钥管理、平台数据安全保护功能,提供相应的密码服务。

2.1 PCR(平台配置寄存器)

PCR 位于 TCM,用于保存完整性度量的摘要值,代表 当前平台的配置状态,是保证平台完整性的基础,所有 PCR 都是 32byte 的存储空间,规范没有限定 PCR 的数量,但 TCG 规范要求 TPM 至少支持 24 个 PCR[4,5,6]。规范要求,在 TCM 启动时 PCR 以一定的规则被赋予初值,平台完整性度量结果 以 SM3 摘要的形式存储在 PCR 中,为在一个 PCR 中存储更 多的摘要值,PCR 在存储时执行扩展机制,计算公式[2]如下: PCR[i] = SM3 (PCR[i] || new value to add)

2.2 预定义

在对部件的完整性度量中,参照比对的标准值由预定义 机制产生,并保存在可信存储区,形成标准值仓库[2,7],标准 值的生成和修改必须得到 TCM 拥有者的身份授权,否则不 能进行。对某部件的完整性度量,如度量结果与标准值相同, 则它可获得执行权。

2.3 完整性度量

完整性度量是对某部件的特征代码计算摘要值,并将摘 要值保存在特定 PCR 的过程。完整性度量始于 RTM,以根 可信为前提,对即将获得执行权的部件的特征代码进行完整 性度量,以 SM3 算法计算摘要值。

2.4 存储

以扩展机制将完整性度量生成的部件特征摘要值保存 在特定 PCR 中,并将度量过程的信息保存在平台度量日志中,包括:度量者信息、被度量者信息、原 PCR 值、度量值、 新 PCR 值、完成时间等。 3.5 完整性报告

完整性报告是指平台向验证者提供平台或部件的完整 性度量值的过程。平台应无需授权的向验证者提供指定的 PCR 值,可向验证者提供相关事件日志信息,TCM 内部生 成一个 SM2 密钥对作为 PIK(平台身份密钥),以 PIK 的私 钥对 PCR 值签名,验证者以 PIK 公钥解密签名,以日志为 据按执行部件顺序重新计算 PCR 值,与接收的 PCR 值比较, 从而确定平台或部件是否能通过验证。

三 密码机制

可信计算密码支撑平台涉及密码算法包括:SM2 椭圆曲线密码算法、SMS4 对称密码算法、SM3 密码杂凑算法、 HMAC 消息认证码算法、RNG(随机数发生器)。

SM2 椭圆曲线密码算法,密钥长 256 位,包括:系统参数、密钥对生成和三个子

算法,三个子算法分别是:数字签 名算法(SM2-1)、密钥交换协议(SM2-2)、加密算法(SM2-3)。

SMS4 是对称密码算法,分组长度为 128bit,密钥长度 为 128bit,加密算法和密钥

扩展算法都采用 32 轮非线性迭代 结构,加、解密算法的结构相同,只是轮密钥的使用顺序相 反。规范要求采用 CBC 模式,Ⅳ由用户自定义,数据的最 末分组(128bit/16byte)需填充,如果最末数据分组长度为 16byte,则在其后填充 16 个内容为 16 的 byte,否则按最末 数据分组不足 16byte 所缺少的字节个数 d,填充 d 个内容为 d 的 byte。

SM3 密码杂凑算法,对给定的长度为 k(k<264)的消息, 经填充、迭代压缩和选裁,生成杂凑值,迭代压缩时,输入 为预处理的消息分组 64byte,输出摘要为 32byte。

HMAC 消息认证码算法,利用密码杂凑算法 SM3,对 给定的消息和验证双方共享的密码信息产生长度为 t(16≦t ≦32)个字节的消息验证码,计算公式:HMAC=SM3((K0⊕ opad) || SM3((K0⊕ipad) || text))[2],TCG 规范对 TPM 要求 HMAC 消息认证码算法使用支持 20byte 的 SHA-1 算法[3,4]。

RNG,规范不限定随机数生成的算法,算法由 TCM 制 造商设计实现,要求所生成的随机数必须为真随机数,并满足国家商用密码随机数检测要求。

3.1 TCG的密钥体系

1)主要采用公钥密码,没有明确设置对称密码。

由图 1可见,在 TPM的结构中具有 RSA引擎,而没有对 称密码引擎,这说明它设置了公钥密码 RSA,而没有明确设置 对称密码。公钥密码和对称密码各有 自己的优缺点。在应用 中同时采用这两种密码互相配合,才能发挥更好的安全作用。 而 TCG在 TPM中只设置公钥密码,不明确设置对称密码,显 然是一个缺点。 2)密钥种类繁多,管理复杂。

TCG一共定义了七种密钥类型,每种类型都附加了一些 约束条件以限制其应用。这些密钥可以粗略地分类为签名密 钥和存储密钥。更细的分类是:平台密钥、身份认证密钥、绑 定密钥、普通密钥和继承密钥。对称密钥被单独分类为验证 密钥。这七种密钥是:签名密钥、存储密钥 、身份密钥、背书密 钥 、绑定密钥、继承密钥和验证密钥。由此可见,密钥种类繁多,从而导致管理复杂 。 TCG的密钥管理采用树形结构,即通过上层父密钥的公 钥部分对下层密钥进行数据的加密保护,同时辅 以密钥访问 授权的机制,从而确保父密钥的使用合理 ,如图 5所示

图 5 TCG密钥管理体系

3.2TCG的对象访问授权协议

TCG规范中描述了六种安全协议,包括两种基本的授权数据验证协议:对 象无关授权协议、对象相关授权协议、委托相关授权协议、授权数据插人协议、授权数据修改协 议和非对称授权变更协议。

OIAP和 OSAP用来建立授权会话上下文对象,TCG通过 TPM— OIAP()和 TPM—OSAP()这两个命令被用来初始化会话 对象。ADIP、ADCP、AACP是用来建立和管理 TPM对象的授 权数据,实现上表现为 TPM的管理命令。 TCG安全协议中主要使用 Rolling Nonce、HMAC和 MGF1 三种机制保证消息的完整性 、保密性,防止重放攻击和中间人攻击 。

四TCG的密钥管理体系分析

4.1 TCG密钥体系安全性分析

前面我们已经提到过,TPM 的可信存储根 (Root of Trusted Store,RTS)就是存储根密钥 SRK,可信报告根(Root of Trusted Report,RTR)就是背书密钥 EK。SRK作为存储 的 信任根被植人 TPM内部。在图5中,我们可以看到 TPM 只 在其内部的易失存储器中管理并维护--d,部分当前正在使用 的密钥,对于那些没有被使用的,或者成为不激活的密钥是需要保存在TPM外面的,只有需要使用时才通过密钥加载函数 操作加载到TPM内。因此这就需要对外部存储的密钥进行 好的保护,从而确保整个密钥树的安全性。

由于 SRK的私钥部分被定义为不可泄漏于 TPM之外, 因此当需要 SRK进行解密处理时,解密过程必须是在 TPM 内部进行。这也就意味着如果一个被 SRK加密的数据离开 了所在平台,那么就无法得到有效的解密。在图5的密钥管 理树中,SRK居于整个密钥树型结构的最上层,它通过对存储 设备上密钥子树的根节 点实施加 密控制 ,并将这种能力向下委托,就能够实现对整个密钥体系进行有效的控制。值得注意的是,在 TCG的规范中,由于密钥的明文形式仅可能出现 于 TPM之内,同时密钥的使用需要一定的授权信息,因此密 钥在整个体系中得到了非常好地保护 ,同时只有那些持有授 权信息的使用者才能正确地使用密钥。 此外所有被 RTS管理的密钥分为可迁移和非迁移两类型。这种迁移属性和迁移的授权数据在密钥创建时建立,并且不可以改变。非迁移密钥只能和一个TPM绑定,典型例子为AIK(Attestation Identity Key),如果 AIK可 以迁移 ,则可以允许一个 TPM冒充另一个 TPM。共有三种密钥对 TPM是不透明的:签名密钥 、AIK和存储密钥。SRK(Storage Root Key) 和 EK(Endorsement key)是嵌人到 TPM 的 。因此这就涉及到对于迁移权限的合理管理问题。

同时,由于 TPM内部存在一个包括 TPM所有者在内的 任何外部使用者都无法了解的秘密信息 tpmproof,因此一旦 将某个数据与 tpmproof相关联后,除了存储有 tpmproof的 TPM芯片外,任何人也不可能将这种关联关系给打断,这样 也就约束了数据的信息流动。类似地如果将密钥与 tpmproof 进行关联 ,那么这些数据和密钥就必须服从 TPM 的绝对指 挥,从而存在于可信计算平台的密钥就在 TPM的有效指挥下 能够向外提供一套合理的安全机制。迁移授权和 tpmproof的 存在实际上体现了TPM对密钥管理的灵活性。

尽管 tpmproof具有很好的约束信息的能力,由于其本身 只是一串在向平台加人共享秘密,添加 TPM所有者时候产生 的随机数,因此它与当前正在运行的可信计算平台环境关联 性并不大。为了能够提供一套与系统环境相关联的安全机 制,TCG在密钥管理中将密钥和数据与 PCR进行了有效地关 联。当有人调用 TPM—CreateWrapKey的命令来创建密钥时, 它能够通过制定一些 PCR寄存器 ,将当前存储于 PCR中对当 前环境进行度量的数值与密钥进行关联。当我们在事后需要 将这个密钥装人 TPM来进行使用时候 ,TPM将会核查密钥结 构中关联的PCR寄存器 ,以及当前 PCR的数值是否与历史上 创建密钥时候是一样的。这样创建的密钥就可以将来在一个 已经被预见到的环境中使用。类似地,对于数据和 PCR的关 联性,TCG提供了一套称为密封存储的能力,即 TPM—Seal/ TPM— Unseal以及TCG1.2版本中推出的 TPM—SealX指令集。

4.2 TCG密钥体系的改进

在 TCG的密钥管理机制中,每个密钥都受到父密钥的加 密保护(除 SRK、EK外),同时也需要一个授权数据来进行权 限控制。但在实际应用中,随着密钥数量的不断增加,相应的 授权数据也大量增加,因此用户需要维护大量的El令,这就给 实际可信计算平台的应用造成很大的困难。这是 TCG的密 钥管理机制中的另一缺点。

TCG为了解决 TPM的存储空间有限的问题,用父密钥对 除 EK、SRK外的所有密钥进行加密之后保存在 TPM之外 , TCG内部没有存储密钥的任何信息。如果修改某一密钥的授 权数据 ,在 TPM外就存在包含该密钥的两个加密数据块 ,分 别对应老授权数据和新授权数据。如果将含有老授权数据的 密钥数据块载人到TPM中,该密钥仍然可以正常使用 ,只要 输人老的授权数据即可。类似地,在 TCG的密钥机制下,也 没有办法删除某个密钥。这就是 TCG密钥机制中的 TPM内 外的同步问题。这是 TCG的密钥管理机制中的又一缺点。 本文在减少密钥授权数据个数以及解决 TPM的同步问 题两个方面对 TCG的密钥机制进行了改进。我们建立了一 种授权数据与密钥的复用关系,即让一个授权

数据可以对应 多个密钥 ,同时将授权数据与密钥数据分开存储,授权数据存 储为列表的形式 ,表 中包括有密钥与授权数据的对应关系。 该列表由 SRK加密后存储在 TPM外 ,TPM 内则要存储该表 的 Hash值,以此解决同步问题。 4.2.1 增加对称密码引擎

TCG的TPM结构中没有涉及明确设置对称密码 引擎。 但从技术角度而言,公钥密码和对称密码各有自己的优缺点, 在应用中同时采用这两种密码互相配合 ,才能发挥更好的安 全作用。一般而言,对称密码计算效率高,适合对计算量较大 的数据进行处理 ,如对数据的机密性进行保护。TPM作为一 个可信密码模块 ,其必须提供数据机密性的功能。因此,我们 认为可以在TPM架构中添加对称密码引擎,其主要功能是: 1)保护隶属于TPM内部的敏感数据的机密性 ;

2)保证 TPM内部模块与外部实体进行交互时,所涉及的 敏感数据的机密性。 隶属于 TPM内部的敏感数据包括背书密钥 EK、平台证 明信息、所有者授权数据、存储根密钥 SRK、平台身份认证密 钥 AIK、存储密钥 、签名密钥及其授权数据等。

其中EK、SRK及其授权数据存储在 TPM之内,从安全性 角度考虑,这些数据信息是不被允许泄漏到 TPM之外的,其 在 TPM内部的存储,是受到 TPM内部机制的保护;在具体应 用中,隶属于一个 TPM的 AIK、存储密钥和签名密钥可能会 有很多,由于 TPM资源有限,不可能将这些密钥都存储在 TPM内部,为此,往往采取“内部明文加密,外部密文存储”的 形式来处理。TCG采取的方法是全部使用非对称 RSA算法 来进行机密性保护,但是一旦所需的处理次数频繁或者单次 处理数据量较大时,对于 TPM系统资源的消耗非常大,影响 了数据处理效率。因此,我们利用对称密码算法和 SRK将 AIK、存储密钥和签名密钥加密之后,存储到 TPM外部,要使 用这些密钥时再将这些密钥载入到 TPM 中,用 SRK和对称 密码算法进行解密。这与 TCG单纯采用公钥密码相比较 ,在 性能和安全性上都会有所提高。

TPM要向主平台提供可信支撑服务,这就要求 TPM与外 部实体进行交互。当 TPM与外部实体交互时,会有一系列需 要保护的敏感数据进行传输,包括密钥的使用授权数据 、密钥 的迁移授权数据、平台所有者的授权数据等。我们采取会话 密钥和对称密码算法对敏感数据进行加密之后再传输。会话 密钥基于访问对象的授权数据而得到,访问对象的授权数据 对 TPM和外部实体而言是共享的,因此可以保证会话密钥对 双方是共享的。

4.2.2 授权数据复用及密钥数据同步

对于密钥授权而言,需要修改密钥的存储结构,将密钥标 识信息加入到密钥结构中,而将密钥授权信息分离到外部来 , 即添加密钥全局标识符取代授权数据,结构中的其余数据项 保持不变。

授权数据列表的每条记录所包含的数据项包括授权数据 标识 authDataID、授权数据的Hash值 authValue以及所对应密 钥标识 keyID等信息。该列表由 SRK在TPM内部加密后,存 储在 TPM外部。在密钥使用前 ,该列表需要首先被加载到 TPM中,TPM用 SRK对其进行解密,并重构所载入表的 Hash 值,与存储在 TPM中的 Hash值进行比较 ,以解决授权数据列 表在 TPM内外的同步问题。

TPM创建密钥时,可以为该密钥建立新的授权数据,也 可以指定旧的授权数据 authDataID。这就解决了授权数据的 复用问题;如果是建立新 的授权数据,TPM的授权数据列表 及其存储在TPM内的 Hash值同时也要更新。 需要使用某个密钥进行加/解密等操作时,须先将改密钥 装载到TPM 中时,所载入的密钥数据块中包含其父密钥标识 keyID和父密钥授权数据验证码等。TPM判断其父密钥的授

权数据验证码是否正确,即根据 keyID在预先已加载 了的 TPM授权数据列表中查找对应的 authValue,重构验证码,并 与外部实体提供的授权数据验证码进行 比较。如果相同,则 使用父密钥解密欲载入密钥的 TPM—STORE—ASYMKEY结构 数据,并返回该密钥的 keyID,否则返回错误信息。 密钥成功载入到 TPM之后,具体使用该密钥进行加/解 密等操作时,需外部实体提供该密钥的 keyID和授权数据验 证码。TPM根据 keyID查找授权数据表 中对应的 authValue, 重构验证码,并与外部实体提供的授权数据验证码进行比较。 如果相同则允许使用该密钥,否则返回错误信息。

当需要修改密钥授权数据时,在对其旧的授权数据验证 码的验证通过之后,判断新的授权数据是否在 TPM授权数据 列表中,如果存在则新建立一个该授权数据与密钥之间的对 应关系,并删除原授权数据与密钥之间的对应关系;如果不存 在则新建一个授权数据,并建立新授权数据与密钥的对应关 系,并删除原授权数据与密钥之间的对应关系。TPM重新生 成变化了授权数据列表的 Hash值。

当要删除某一个密钥时,TPM将在授权数据列表中删除 该密钥与授权数据之间的对应关系,并重新生成授权数据列 表 的 Hash值。

采用上述的授权数据管理方式后,对于修改了授权数据 的密钥或者被删除了的密钥,在授权数据列表中不再有相应 的记录。TPM中又存储有授权数据列表的 Hash值,这可 以 保证列表载入到TPM中的列表始终是最新的,从而解决 TPM 内外的同步问题。

4.2.3基于授权 数据复用的安全协议

基于授权数据复用管理机制,可以设计一个统一的安全 协议,保护实体与 TPM的通信过程。这个安全协议可用于除 TPM所有者创建和创建前的相关操作 以外的所有操作。协 议流程可分为会话建立和命令执行两个阶段,以执行 TPM — Example命令为例,协议内容如下所示。 步骤 1 外部调用者:

输入 AuthDataID生成随机数 callerNonce:

生成 校 验 值 inMac=HMAC(AuthData.TCM AP CREATE命令码 ll AuthDataID ll callerNonce):

AuthData为授权数据; 保存 callerNonce: 发送会话建立请求。 通信数据 :

TCM — AP — CREATE;AuthDataID;callerNonce:inMac 由外部调用者向可信密码模块 TCM传输。 可信密码模块 TCM:

重构校验值 Mac:HMAC(AuthData,TCM—AP—CREATE 命令码 ll AuthDataID ll callerNonce);

验证用户身份和数据完整性 ; 创建会话 session;

生成对应 的会话句柄 sessionHandle; 生成随机 数 TCMNonce;

生 成 会 话 密 钥 sessionKey = HMAC (Au~Dam, callerNonce ll TCMNonce); 生成初始序列号 seq;

本文来源:https://www.bwwdw.com/article/742v.html

Top