对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

2024-01-15 15:18

本文主要是介绍对TCG的概要分析和对TPM的学习-可信存储根RTS(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(YOUXIANG:lichunwen1987ATqq。com)

参考TCG Specification Architecture Overview 1.4 。http://www.trustedcomputinggroup.org/ 检索TCG Specification Architecture Overview

   

 RTS是一个准确的记录完整度量的摘要值和顺序计算引擎,它将完整性度量保存在日志中,将它们的散列值保存在PCR中。RTR是一个可靠报告RTS的计算引擎。RTS保存委托给TPM的密钥和数据,并管理少量的内存,其中存放的密钥用于完成解密和签名的操作。

 

TPM中的密钥管理架构

    上图为TPM的密钥管理架构。TPM定位于一个造价低廉的组件,可以供普通消费者使用。所以TPM内部只有有限的易失性和非易失性存储以减少成本,那么TPM之外就需要无限的外部存储扩展。所以需要有外部存储(External Storage)和密钥缓存管理(Key Cache Management:KCM)模块。EK和SRK是仅有的两个只存在于TPM中的密钥。密钥属性,可以分为可迁移密钥和不可迁移密钥,表明key是否可以由一个TPM迁移到另外一个TPM。AIK是一个典型的不可迁移密钥。可迁移的密钥可以用来在两个TPM平台间交换信息。

先介绍TPM中的密钥类型,TPM中有7中Key类型:

l  EndorsementKey

EK是一个至少2048-bit的RSA不可迁移密钥,由TPM的生产商生成的,EK证书与之对应;EK证书是为了确保key是EK,是由TPM中保存的EK。

EK私钥不会离开TPM,只存在与TPM的保护区中。

它通常只用来做两件事情:创建Owner(解密SRK)和生成AIK证书(解密CA发送过来的AIK证书)。

EK与TPM是一一对应关系,一个TPM只有一个EK。

EK不能被用来加密或者签名。

l  IdentityKeys

1)  如果直接使用EK签名,则可能会带来隐私问题,所有EK的签名都能够具体找到是哪个TPM。 所以不能直接使用EK签名。

2)  EK需要一直保存在TPM中,不能被暴露,所以不能直接使用EK对PCR进行签名。使用AIK(Attestation Identity Keys)作为EK密钥的别名(代理)。

3)  又称之为 AIK,不可迁移的签名密钥,但是仅对TPM产生的数据进行签名,例如TPM的配置和PCR值。这种操作是Quote,区别于一般的签名。

4)  AIK作为一种特殊的密钥,它存储在一个通用的存储设备中,当它离开TPM时,必须提供完整性保护。而且它是不可迁移的。(以AIK证书形式发送)

5)  AIK是一个2048位的RSA密钥

6)  AIK可以确保是与TPM进行通信,但不具体到哪一个TPM

7)  签名的key仅对TPM中的信息进行签名(所以不能使用AIK对外部数据进行其签名)。

8)  可以有多个AIK。

l  StorageRoot Key (SRK)

Storage Root Key (SRK) and the Endorsement Key (EK) 这两个Key是永久保存在TPM中的,下图为TPM中RTS存储的Key的关系。SRK是由TPM产生的,SRK的密码在创建一个TPM账户时由EK进行了加密。SRK用来保护其他存储在TPM之外的密钥。

l  Signingkeys:

签名密钥是用来对应用数据或消息进行签名的非对称密钥,可以是可迁移的或不可迁移的。

l  Storagekeys

存储密钥一般是用来加密数据或其他密钥的非对称密钥,用来产生存在于TPM之外的密钥和数据。

l  Bindkeys

May be used to encryptsmall amounts of data (such as a symmetric key) on one platform and decrypt iton another. 用来加密一个平台的少量数据(例如对称密钥),然后在另一个平台解密。

– happens outside of the TPM

– encrypt data with the public part of aTPM key

– only the TPM the key pair belongs tocan decrypt the data

与Seal的区别:

– without using PCRs: bind/unbind

– with using PCRs: seal/unseal

l  LegacyKeys

在TPM外创建的密钥。在进行签名或者加密操作之后再导入到TPM中,可迁移密钥。

l  AuthenticationKeys

用来保护涉及到TPM的传输会话的对称密钥。Authentication Keys are symmetric keys used to protect transportsessions involving the TPM

 

几个小知识点:

Ø  只有EK和SRK是永久存储在TPM中的

Ø  TPM的key都是在TPM中产生的

Ø  使用TPM的key,需要先将key加载到TPM中

Ø  TPM中的key的slot是有数量限制的

Ø  对TPM中的key slot的管理由TSS完成

TPM中的key的产生方式:

指定一个父key,由RSA Engine创建一个新的RSA对, 由于key slot数量是一定的,需要一定安全机制将TPM中的key换出来。、

如果一个key离开TPM,需要使用父key的公钥进行加密。

因为父key是在TPM中的,所以TPM的key的私钥只能在TPM中解密和使用

SRK,是最顶层的key,永远驻留在TPM中

SK组成了key的层次,签名key经常在TPM之外

 

下图为TPM的key层次结构,顶层root密钥为SRK,其他key都为通过SRK生成。产生一个key或者在keyslot中已有的key私钥离开TPM,应该使用其父key的公钥进行加密。而key的使用都在TPM中(因为经过层层加密,只有在TPM中的SRK才能最终将其解开),所以TPM的外部key需要通过key的树结构返回到SRK,经解密后使用。

 

TPM Key Hierarchy

 

Unloading TPM Keys

 

下面为一个使用红圈标示的signing key的例子。

Loading TPM Keys

 

1、首先将SR key1load到TPM中,使用SRK解密,放入key slot中,

Loading TPM Keys

 

2、然后再将SK key2 load到TPM中,使用SRkey 1将key 2解密,放入到key slot中。

Loading TPM Keys

 

3、最后将signing key load到TPM中,使用SR key 2解密。然后将其放在key slot中,再在TPM中使用其进行一些签名操作。

Loading TPM Keys

 

这篇关于对TCG的概要分析和对TPM的学习-可信存储根RTS(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/609323

相关文章

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

java变量内存中存储的使用方式

《java变量内存中存储的使用方式》:本文主要介绍java变量内存中存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、变量的定义3、 变量的类型4、 变量的作用域5、 内存中的存储方式总结1、介绍在 Java 中,变量是用于存储程序中数据

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序