当前位置:网站首页>【TPM2.0原理及应用指南】 1-3章
【TPM2.0原理及应用指南】 1-3章
2022-07-07 15:40:00 【Godams】
码字不易,求求点个赞呗
第一章 TPM的历史
可信平台模块(TPM)是一种加密协处理器。
可信计算组织(TCG)
直接匿名认证(DAA)
认证可迁移密钥(Certified Migratable Key,CMK)
隐私证书认证中心(CA)
平台配置寄存器(PCR)是TPM中的动态内存区,用来保持系统的引导序列度量结果的完整性。PCR可与身份密钥一起用于证明系统引导顺序是否正常。
第二章 基础安全概念
2.1 密码攻击
- 穷举攻击
- 针对算法本身的攻击
密码算法应该避免以下缺陷:
- 算法弱点:选择被认可的算法
- 穷举攻击:扩大密钥长度,让用户选择需要的密钥长度
2.2 安全相关定义
消息:在双方间传送的字节序列
机密性:防止未授权方查看消息neir
共享秘密:双方都知道的一个值
完整性:消息在储存及传输的过程中没有被修改
认证:将消息关联到创建者,使接收方可以确定只有创建者能发送这条消息
授权:证明用户被允许执行这个操作
抗重放:防止攻击者对有效消息进行再利用
不可否认性:防止发送方否认其发送了消息
2.3 密码大家族
- 安全哈希(摘要)
密码哈希比普通哈希要复杂,能接收一条任意长度的消息并将它压缩成固定长度的哈希序列。安全哈希用于哈希扩展操作、HMAC、票据、非对称密钥数字签名和密钥派生函数。为保证机密性,安全哈希有以下重要特征:- 对于给定的消息,构造另一条与它有同样哈希的消息是不可行的
- 构造两条有同样哈希值的消息是不可行的
- 由哈希值解出原消息是不可行的
- 哈希扩展
一旦消息被扩展,就不能通过逆运算取消操作或删除历史记录。- 扩展机制用于更新平台配置寄存器(PCR)的值,扩展入PCR的值能够表示平台状态
- 也可用于审计日志种,审计日志记录了TPM的请求及回复信息
- HMAC:消息认证码
它将消息同一个共享密钥一起哈希之后得出- 可用于向TPM证明用户已经掌握了TPM实体授权数据
- 用于存储在外部的结构的完整性,即证明没有被攻击者篡改
- 也可用于生成密钥,这时就需要密钥派生函数
- KDF:密钥派生函数
TPM需要支持由单一秘密生成多种密钥,这个秘密称为种子密钥,而由种子密钥生成多种秘密的算法称为密钥派生函数(FDF)。TPM使用一种特殊算法使HMAC可作为KDF用,通常它使用种子密钥作为HMAC密钥去将一些变化的数据HMAC化来生成密钥。(这体现一个基本的密码学原则:不能对两个不同的应用使用相同的密钥) - 认证或授权票据
票据是一种包含许多数据的HMAC的数据结构,票据允许TPM延迟验证其执行的操作。因为票据容量有限无法装下整套数据,有时会用消息的摘要取代原本的数据。票据中用于生成HMAC的HMAC密钥不是共享秘密,它只有TPM知道。 - 对称密钥
在以下三种情况下会使用:TPM数据对外部保密、TPM通信加密、使用TPM来协同处理密码- 对称密钥算法模式 :
- 电子密码本(ECB):只是简单加密,相同数据分组产生相同密文
- 密码分组链接(CBC)
- 密码反馈(CFB)
- 输出反馈(OFB)
- 计数器(CTR)
- 对称密钥算法模式 :
加密可保证保密性,但并不能提供完整性及认证机制。
加密信息无法证明消息是否是近期产生的,这个功能由nonce实现
- nonce
是一种在密码操作中只会使用一次的数字,常用于防止重放攻击。为确保消息没有被重放,接收方会生成一个nonce并将其发送给发送方。发送方把nonce放入消息之中。通常TPM nonce会与一个请求消息一起参与HMAC的计算,在消息使用完毕后,TPM会更改nonce,若请求方仍使用旧的nonce,则会验证失败。nonce许保证足够大,不会出现循环。 - 非对称密钥
- RSA,使用大数质数分解作为单向函数。一般数字签名不是直接对数据签名,而是由数据生成摘要,对摘要签名。
- ECC,基于有限域的椭圆曲线。同等强度下ECC密钥比RSA密钥短小很多。
- ECDH(Diffie-Hellman)实现密钥传递:ECC和RSA的不同是,ECC需要两步,而RSA只需要一步。在TPM上需要使用ECDH时,首先(在软件中)生成另一个ECDH密钥,第二步,用新生成的ECDH密钥中的私钥和TPM ECDH密钥种的公钥生成一个临时随机数,将随机数输入到KDF中生成一个对称密钥。简单来说,RSA可直接提供对称密钥,而ECDH需要自己生成。
- ECDSA(椭圆曲线数字签名算法):同RSA区别是,由于ECC密钥很小,所以必须保证正在签名的消息的哈希值不会过大。
2.4 公钥认证
如何确保公钥可信,可以创建数字证书,证书包括用户的公钥部分及密钥的属性,证书由CA的密钥签名。
第3章 TPM 2.0 快速教程
TPM1.2 规范主要想要解决以下问题:
- 设备识别
- 密钥安全生成
- 密钥安全存储
- NVRAM存储
- 设备健康证明:证明系统的健康情况,若系统受到破坏,则可能不可信
TPM 2.0 还拓展了以下功能:
- 算法灵活性
- 增强授权:多因素和多用户身份认证授权策略
- 密钥快速加载:通过对称密钥算法加载密钥
- 非脆弱性PCR:过去密钥与设备状态锁定时会导致管理问题,因为通常情况下,设备状态必须由授权状态更改时,密钥也必须更改,现在不是这样了。
- 灵活管理:不同种类授权可以分开
- 按名称识别资源
3.1 TPM 1.2 的使用场景
- 身份识别
- 加密
- 密钥存储
- 随机数发生器(RNG)
- NVRAM存储:带有限制访问属性,它可以存储密钥,一旦PC关闭,密钥则不可用,这保证了可以向用户提供一些数据,而不用担心由于意外或者恶意的意图而被擦除,NVRAM提供以下功能:
- 存储用于证书链的根密钥:他们不能被修改
- 存储背书密钥(EK):EK由制造商存储,用于在产品交付期间解密证书并将密码传递给TPM,设计目的是保护敏感隐私。
- 存储用于表示机器状态的:例如在统一可扩展固件接口UEFI安全启动实现种使用。
- 在磁盘可用之前使用的解密密钥的存储:如用于自加密驱动的密钥
- 平台配置寄存器(PCR):可将TPM中PCR视为引导过程中度量的结果存储的地方。
- 隐私启用:EK不能直接用于标识特定的TPM,相反TPM提供了一个协议用来生成身份证明密钥(AIK),这个密钥可以作为TPM平台的伪身份密钥。提供使用隐私CA的协议意味着EK可以用于证明AIK源于TPM,而不会证明AIK源自哪个TPM。
3.2 TPM 2.0 额外的使用场景
- 算法灵活性
- 增强授权
新的EA允许存在许多新的情况:多因素多用户认证、资源仅使用n次、资源仅在某些时间段使用、撤销使用资源、资源被不同的人使用的方法。- 密码(明文)
- HMAC密钥(也在TPM 1.2中)
- 签名(例如,通过智能卡)
- 使用附加数据签名
- 至少在启动时,PCR值作为系统状态的代理
- 位置作为特定命令来源地点的代理
- 时间
- 内部计数器值
- NV索引值
- NV索引:可以基于NV索引是否已写入来授权
- 物理存在
- 密钥快速加载(TPM 2.0新功能)
TPM 1.2 中,当一个密钥初始化加载时,它必须使用密钥的父密钥私钥进行耗时的私钥解密。这段话有点绕,我的理解是,在1.2中每次计算的密钥在加电断电周期内会存在,断电就删除,但是TPM 2.0 可以将密钥存储在外部存储器中,这样每次加电断电都可以读取了,而不用再次计算。 - 非脆弱性PCR(TPM 2.0 新功能)
PCR值通常表示机器的状态,较小编号的PCR表示系统的引导过程,较高的PCR表示内核启动后的事件。**密钥和数据都可以锁定到具有特定值的特定PCR,这种行为叫做密封。**但如果密钥或数据被锁定到代表BIOS的PCR,则升级BIOS则很难,这就是脆弱性PCR。在TPM 2.0 中,可以将事项密封为由特定签名者批准的PCR值,而不是特定的PCR值,即只有当PCR处于被特定机构批准(通过数字签名)的状态时,才能让TPM发布一个秘密。 - 灵活管理
TPM 1.0 规范中,在同一时间,TPM只存在两个授权:所有者授权和存储根密钥(SRK)授权,所有者授权用于许多目的- 重置字典攻击计数器
- 将TPM重置为出厂设置
- 防止SRK被了解众所周知的秘密的人修改
- 防止创建AIK,为除了TPM所有者的终端用户提供隐私
- 通过防止创建和删除NVRAM索引,避免NVRAM受到除了了解所有者授权的用户之外的人威胁
TPM2.0 中,所有者授权的各种用途所代表的角色在规范中被分开了,这是通过给予角色不同的授权和策略,以及使它们在TPM中具有不同的hierarchy来实现的。
- 按名称识别资源(TPM2.0新功能)
TPM1.0中,资源通过句柄而不是加密名称来识别,因此,若两个资源有相同的授权,低级软件可能被欺骗而改变识别资源的句柄,于是用户可能被欺骗,对不同的行为授予预期不同的授权。TPM2.0中,资源通过名称标识,密码与名称绑定,从而消除了这种攻击。在名称中包含了密钥策略,所以名称可以用作证明授权使用密钥意味着什么。
边栏推荐
- With the latest Alibaba P7 technology system, mom doesn't have to worry about me looking for a job anymore
- 大笨钟(Lua)
- [image sensor] correlated double sampling CDs
- QT picture background color pixel processing method
- 【网络攻防原理与技术】第7章:口令攻击技术 第8章:网络监听技术
- L1-028 判断素数(Lua)
- LeetCode 1477. Find two subarrays with sum as the target value and no overlap
- Matplotlib绘制三维图形
- Lex & yacc of Pisa proxy SQL parsing
- How to choose the appropriate automated testing tools?
猜你喜欢
LeetCode刷题day49
Seaborn data visualization
PLC: automatically correct the data set noise, wash the data set | ICLR 2021 spotlight
【信息安全法律法規】複習篇
Matplotlib绘制三维图形
【视频/音频数据处理】上海道宁为您带来Elecard下载、试用、教程
状态模式 - Unity(有限状态机)
麒麟信安携异构融合云金融信创解决方案亮相第十五届湖南地区金融科技交流会
[Seaborn] combination chart: facetgrid, jointgrid, pairgrid
专精特新软件开发类企业实力指数发布,麒麟信安荣誉登榜
随机推荐
麒麟信安操作系统衍生产品解决方案 | 存储多路径管理系统,有效提高数据传输可靠性
LeetCode 120. Triangle minimum path and daily question
[fan Tan] after the arrival of Web3.0, where should testers go? (ten predictions and suggestions)
Solidity 开发环境搭建
【TPM2.0原理及应用指南】 16、17、18章
LeetCode 1981. Minimize the difference between the target value and the selected element one question per day
Biped robot controlled by Arduino
QT video transmission
mysql使用笔记一
[Seaborn] combination chart: pairplot and jointplot
Sator推出Web3遊戲“Satorspace” ,並上線Huobi
Sator推出Web3游戏“Satorspace” ,并上线Huobi
LeetCode 890(C#)
字符串 - string(Lua)
mysql实现两个字段合并成一个字段查询
How to mount the original data disk without damage after the reinstallation of proxmox ve?
防火墙系统崩溃、文件丢失的修复方法,材料成本0元
AI来搞财富分配比人更公平?来自DeepMind的多人博弈游戏研究
《世界粮食安全和营养状况》报告发布:2021年全球饥饿人口增至8.28亿
Matplotlib绘图界面设置