「TCG 规范解读」第8章 TPM工作组 TPM 1.2中 SHA1的使用

news2024/12/24 9:19:29

 可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance,TCPA)所开发的规范。现在的规范都不是最终稿,都还在不断的更新中,比如:TPM的规范就从原来的v1.0更新到v1.2,现在还在不断的修订。

SHA1-Impact_V2.0

简介


本文档列出了TPM v1.2规范中SHA-1的使用情况,并对2005年发现的碰撞袭击对其影响进行了评估。总的来说,TCG 采取了一些预防措施来防止碰撞攻击,例如在做哈希前使用新的随机生成值或外部未知的随机生成值。此外,在数据中使用固定结构阻碍了攻击者操纵数据以有效地执行冲突攻击的发生。我们确实发现了一种极端情况,即RSA签名命令在签名之前可能会对输入进行散列,在这种情况下,TCG 不经意的选择了 TPM 之外的数值来连接到待签名数据,如果外部选择新的随机生成的值,在这里不会有问题,否则 TPM 需要提供保护 SHA-1 碰撞攻击的其他方式。

SHA 引擎的主要目的

TPM 包含了以下命令来实现一个通用目的的 SHA-1 引擎:

  • TPM_SHA1Start
  • TPM_SHA1Update
  • TPM_SHA1Complete
  • TPM_SHA1CompleteExtend

 这个能力有助于 SHA-1 哈希的计算,TPM 暴露这些命令方便平台使用。TPM 在执行 SHA-1 会话过程中禁用了其他任何命令的处理。如果在TPM_SHA1Start和TPM_SHA1Complete/TPM_SHA1CompleteExtend中收到TPM_SHA1CompleteExtend以外任何命令,TPM 会将会话无效。

影响

SHA-1 引擎只是一个服务,所以碰撞攻击影响对其自身而言是不确定的。SHA-1 引擎是 TPM 的必要组件,下面章节中描述了 TPM 如何使用这个服务,进一步的讨论在这些场景下碰撞攻击的影响。

PCR 扩展

TPM_Extend 命令使用 SHA-1 和 PCR 寄存器连结,输入是 20 个字节,通常是在 TPM 外部进行计算的。TPM 使用 SHA-1 来扩展一个 PCR 如下:

New_PCR_Value = SHA-1(Old_PCR_Value || Input_Digest).

影响:

TPM_Extend的输入参数是高度结构化的,即只有20字节的输入,那么攻击者只能操作者 20 字节而不是原文,这样的去构造碰撞是非常困难的。

审计摘要 Audit digest

除了审计命令本身以外,TPM 能够对其他任何命令进行审计。TPM 管理员(拥有者)可以控制那些命令需要被审计,当 TPM 命令执行可审计命令时(默认情况下,128个命令中有23个命令是可审计的),会使用 SHA-1 来对命令的输入进行哈希,然后扩展到审计摘要寄存器,这个寄存器在TPM_Startup或者之前审计会话关闭后被设置为 NULL,扩展的方式和 PCR 扩展相同。摘要同时合并一个标签和TPM_COUNTER_VALUE结构,增加了更多的结构。当 TPM 响应一个可审计命令时,TPM 同时也会对输出参数做哈希,并且扩展到摘要审计寄存器中。所有的哈希和扩展操作都使用 SHA-1,只有 5 个审计命令不使用 SHA -1 引擎。

影响:

所有的 TPM 命令和响应都是高度结构化的,即使攻击者有能力改变输入参数,他也无法操作 TPM 的响应。攻击者无法控制 TPM 响应的输出参数,因此无法成功进行上述的碰撞攻击

PCR 引用

TPM 有两个 PCR 引用命令,TPM_Quote和TPM_Quote2,这个命令会用SHA-1来讲 PCR 寄存器连接起来。输入是一个最多 5 字节的索引,用来选择 PCR 寄存器子集。TPM 填充一个包含这些 PCR 的结构,将其哈希并签名。输出是选择的 PCR 组的 SHA-1 签名。

影响:

TPM Quote 的输入是高度结构化的参数,潜在的攻击者只能操作 5 个字节,以选择不同的 PCR 集合。即使攻击者通过 TPM_Extend 指令成功的操作了 PCR,该动作也会触发其他依赖 PCR 的安全特性。这相当于修改了原像,即 SHA-1 无法解决。尽管 quote 结构能够包含 20 字节的外部数据供攻击者使用,实际上也很难形成实用的攻击。所以攻击者无法通过操作该命令的输入来实时碰撞攻击。

RSA 签名

TPM 有一个 RSA 签名命令,TPM_Sign,会在生成签名前用到 SHA-1。这个命令处理三种不同的场景。前两种场景是提供的数据大小小于签名密钥长度,因此 TPM 不会对数据进行哈希。最后一种情况是,TPM 创建一个结构包含字符串“SIGN”、一个防重放攻击的nonce以及将要别签名的数据。SHA-1 会对这个结构进行哈希、签名作为响应输出。

影响

说实话,增加防止重放攻击的nonce已经能够阻止潜在的攻击了,不行的是 TCG 选择了外部生成 nonce 而不是在 TPM 内部随机生成,这给攻击者提供的操作空间。这种情况下,攻击者有可能操作函数输入创建能够影响签名的碰撞攻击。然而,TPM 的完整性和其他函数的安全性仍然保持完整的。

密钥结构(Blobs)

下面的密钥结构包含了 SHA-1 计算的摘要:

  • TPM_STORE_ASYMKEY 
  • TPM_SEALED_DATA
  • TPM_MIGRATE_ASYMKEY
  • TPM_CERTIFY_INFO
  • TPM_CERTIFY_INFO2
  • TPM_DELEGATE_KEY_BLOB

这些密钥结构频繁嵌入加密区域里的公共区域的摘要,还有整个密钥结构的摘要,提供统计学意义上唯一的标识。

影响

一些摘要用来保护固定共有结构,攻击者几乎没有可操作空间。另一些摘要被加密了,也就是说操作这些数据等同于要破解 RSA,这样可以看出攻击者也很难能利用碰撞攻击搞事情。

对称算法的 IV 和 Counter

TPM 基于 SHA-1 对于 TPM 生成的随机数和用户提供的数值来生成初始向量 IV 和 初始计数值。

影响:

既然 SHA-1 的输入是 TPM 产生的随机数,攻击者就无法操作这些输入来进行碰撞攻击,也就无法控制 IV 和 Counter来攻击对称加密算法。

授权会话 Authorization Sessions

TPM 建立并维持这些授权会话,HMAC 算法使用 SHA-1 来提供完整性以及防重放特性。

影响

TPM 使用内部生成的新鲜的随机数来生成 nounce,所以这些会话都能抵抗 SHA-1 碰撞攻击。

DAA

TPM 使用 SHA-1 来验证 DAA 算法本身的摘要,这也是协议内部固定的结构。同时也用 SHA-1 来对算法参数和固定结构进行哈希

影响

DAA 的参数是固定大小的非随机数值,结构也是固定的。攻击者没有太多机会操纵参数和结构实现碰撞攻击,除非破解 DAA 算法本身

身份密钥 Identity Keys

TPM 能够创建、激活身份密钥,当激活身份密钥时,TPM 会创建并验证固定密钥结构和其他结构的摘要值。

影响:

固定的结构/格式使得攻击者无机可乘

传输会话

TPM 传输会话具有记录日志功能选项。即使没有日志选项,也有很多传输会话命令会有一些生成 SHA-1 摘要的调用。

影响

同上,固定结构,无法攻击。

通过上下文命令保存 TPM 资源

TPM 能够通过 TPM_SAVECONTEX 命令来保存 TPM 资源,同时通过 TPM_LOADCONTEX 来重新加载这些资源。TPM 使用 SHA-1 来计算整个上下文的完整性,然后对敏感区域和随机生成的攻击者无法得知的随机数进行加密。在加载资源时,会验证摘要值。

影响

这种机制能够阻止碰撞攻击。

代理 delegation

TPM 允许需要管理员权限的个别命令代理给一些用户而不用授权其所有权限。用户也可以通过密钥授权代理密钥。代理表单的摘要是通过 SHA-1 计算的,来验证这些摘要、对称密码的 IV 和密钥流。

影响

因为密钥流是用来保护授权数值的,这个不是必须的,所以我们对其进行考虑。IV 的创建使用新鲜的随机数生成的随机值,能够抵抗碰撞攻击。最后代理块是高度结构化的,并且哈希中包含了攻击者无法得知的随机值,所以这些摘要也能抵抗碰撞攻击。

迁移

TPM 允许特定密钥迁移到其他地方。更复杂使用场景是密钥的认证迁移,即从一个 TPM直接或间接的到另一个 TPM。使用 SHA-1 来计算结构化的哈希并验证摘要

影响:

既然迁移授权的摘要中包含随机生成的数值,攻击者并不知道,所以这个能够抵抗碰撞攻击。密钥和密钥结构是高度结构化的,私有区域也是加密的。操纵加密区域等同于破解 RSA 2048 算法,这个在目前来说也是不可能的。因此攻击者无法进行使用密钥摘要进行碰撞攻击。对于那些复合密钥摘要也是同样的。

参考


1.TCG 工作组规范合集

2. 更多 TPM 应用信息参考 

  • Ken Goldman, e-mail dated July 7, 2006
  • Michael Szydlo, “SHA1 Collisions can be Found in 2^63 Operations”, http://www.rsa.com/rsalabs/node.asp?id=2927, RSA Laboratories, August 19, 2005. TCG, “TPM Main Part 1 Design Principles”, v1.2, revision 103, October 26, 2006
  • TCG, “TPM Main Part 2 TPM Structures”, v1.2, revision 103, October 26, 2006
  • TCG, “TPM Main Part 3 Commands”, v1.2, revision 103, October 26, 2006 Wikipedia, “SHA Hash Functions”, http://en.wikipedia.org/wiki/SHA_hash_functions, March 31, 2010 

术语


TCG,可信计算组织;

TPM,可信平台模块;

可信度量,主体通过密码学方法对客体进行度量的方法;

皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~

“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows Server 2008 R2安装onlyoffice【docker】

目录 前言 准备工作 安装docker 安装onlyoffice 常见问题 前言 目前docker for windows只能在windows10/11上安装,其他的windows版本只能使用Docker Toolbox来安装,使用该工具安装的docker其实是借助了Oracle VM VirtualBox虚拟机来运行的&a…

简历的专业技能怎么写?排版需要注意的事项

一、简历的专业技能怎么写? 首先,先问一下你自己会什么,然后看看你意向的公司需要什么。一般HR可能并不太懂技术,所以他在筛选简历的时候可能就盯着你专业技能的关键词来看。对于公司有要求而你不会的技能,你可以花几 天时间学习一下,然后在简历上可以写上自己了解这个技…

使用sshdo限制incoming ssh只能执行指定命令

前言系统管理员经常面临一个问题,如何将用户的incoming ssh限制在一个命令白名单里,达到安全的目的。本文介绍sshdo工具,来实现该功能。仓库地址https://github.com/wanlinwang/sshdo安装tar xzf sshdo-1.1.tar.gz #如果是直接clone仓库则无需…

JVM学习笔记六:运行时数据区之堆

目录 概述 堆空间内部结构 JDK7版本 JDK8版本 堆空间的内存划分 堆空间大小设置参数 概述 Java堆是虚拟机所管理的内存中最大的一块,其在JVM启动时即被创建,并且空间大小也被确定(这里是不考虑Java8之后以本地内存来实现的元空间&…

连续时间信号与离散时间信号

前言 《信号与系统》是一门很难的课,也是许多学校考研要考的专业课,由于每周只有两节课,所以每次上完都要及时的去复习,这里参考的教材是奥本海姆著作,刘海棠译,北京:电子工业出版社&#xff0…

实践数据湖iceberg 第四十课 iceberg的sql运维方式(合并文件、合并元数据、清理历史快照)

系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg 实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到…

只因小黑子:SVG

小黑子的SVG复习SFV画布1. 初始SVG2. SVG绘制矩形、圆形和椭圆形2.1 rect 矩形2.2 circle 圆形2.3 ellipse 椭圆4. SVG绘制线条、多边形和多线条4.1 line 线条4.2 polygon 多边形4.3 polyline 多线条5. SVG绘制文本 text6. SVG绘制路径 path7. SVG描边属性8. SVG 模糊和阴影效果…

MySQL安装配置教程(超级详细、保姆级)

一、 下载MySQL Mysql官网下载地址:https://downloads.mysql.com/archives/installer/ 选择想要安装的版本,点击Download下载 本篇文章选择的是5.7.31版本 二、 安装MySQL 选择设置类型 双击运行mysql-installer-community-5.7.31.0.msi,…

车载以太网 - 测试用例设计 - 时间参数 - 11

前面已经介绍过DoIP相关的时间参数信息,然而对于时间参数信息相关的测试用例该如何设计呢?个人认为这是用例中最好设计的一类,这类的用例只需要按照定义去设计写测试用例即可,难的是自动化脚本开发和手动测试执行。毕竟时间参数一般都是毫秒级的验证,就算是秒级的我们也很…

【项目管理】对管理的认识与思考

在进入职场一段时间后,我们不免会对管理有一些接触,可能会自己带团队、可能会到管理岗位等等;做管理重要的就是对于不同层级的管理。 管理是一门艺术,在谈到管理时,我们首先想到的应该是管人、带团队或者是一个部门或公…

matplotlib学习笔记(持续更新中…)

目录 1. 安装,导入 2. figure,axes(图形,坐标图形) 2.1 figure对象 2.2 axes对象 2.3 代码演示 2.3 subplot() 方法 3. 图表的导出 3.1 savefig() 方法 3.2 代码演示 1. 安装,导入 pip install m…

Python —— Windows10下配置Pytorch环境(完整流程)

最终效果 配置流程 一、下载安装显卡驱动 1、查看设备管理器显卡是否为NVIDIA,并确定显卡型号 2、根据显卡型号然后NVIDIA官网下载安装显卡驱动 下载完成后,双击一步一步执行即可。 3、安装完成驱动后,打开cmd终端输入"nvidia-smi"…

JVM学习笔记五:运行时数据区之本地方法栈

目录 概述 本地方法(Native Method) 使用本地方法的原因 本地方法栈 执行流程 概述 如果要了解本地方法栈的作用,首先需要了解本地方法库和本地方法接口。 本地方法接口是Java代码调用其他非Java代码的接口,本地方法库是其他…

观看课程领奖品!Imagination中国区技术总监全面解读 IMG DXT GPU

此前,我们发布了一系列关于 IMG DXT GPU 的介绍,为了让更多读者了解其背后的技术及应用方向,我们特别邀请 Imagination 中国区技术总监艾克录制全新在线课程,为大家全面解读IMG DXT GPU。 点击这里,马上注册观看&…

函数的栈帧的创建和销毁

文章目录本章主题:一.什么是函数栈帧1.什么是栈2.什么是函数栈帧二.理解函数栈帧能解决什么问题呢?三.函数栈帧的创建和销毁解析1.预备知识(1) 认识相关寄存器和汇编指令(2)栈帧空间的维护2.解析函数栈帧的…

uniapp 引入彩色symbol和 指令权限

uniapp 引入iconfont图标库彩色symbol 1,先去阿里巴巴矢量图标库登录 然后点击下载至本地 2.下载本地,然后解压文件夹 3.打开终端cmd命令窗口 npm安装全局包npm i -g iconfont-tools 4.终端切换到上面解压的文件夹里面,运行iconfont-too…

原理的学习

序参考的是这个书:Python神经网络编程 (豆瓣) (douban.com)小白,0基础,也看不懂其它更复杂的书……01.正向计算从左到右,根据输入值,得到输出值总览这就是神经元的数学形式:阈值函数sigmoid函数&#xff1a…

TIA博途_通过不定长数组实现冒泡排序的具体方法示例(封装FC全局库)

通过不定长数组实现冒泡排序的具体方法示例(封装FC全局库) 使用这种不定长数组时要注意,低版本的博途可能不支持这种方法(我自己尝试的V15版本时失败了,无法实现),本例中使用的是TIA博途V17版本。 具体步骤可参考如下: 如下图所示,打开博途后新建一个项目,添加一个12…

Java监听器的理解与实现

文章目录初识监听器Listener接口分类ServletContext监听器HttpSession监听器ServletRequest监听器Java代码实现ServletContextListenerServletContextAttributeListenerHttpSessionListenerHttpSessionAttributeListenerHttpSessionActivationListenerHttpSessionBindingListen…

在 4G 内存的机器上,申请 8G 内存会怎么样?

在 4GB 物理内存的机器上,申请 8G 内存会怎么样? 这个问题在没有前置条件下,就说出答案就是耍流氓。这个问题要考虑三个前置条件: 操作系统是 32 位的,还是 64 位的?申请完 8G 内存后会不会被使用&#x…